黑马程序员——22,字节流InputStream,OutputStream,字节流缓冲区技术,BufferedInputStream,BufferedOutputStream

------<ahref="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

/*

字节流的相关讲解:

InputStream(读操作),OutputStream(写操作)

在用法上和之前的字符流差不多

*/

import java.io.*;
class  Ioliou13
{
         public   static  void   main(String[] args)throws  IOException
         {
      //   method();
              method1();
         }
         public  static void  method()throws  IOException
         {
             FileInputStream    fis=new  FileInputStream("f:\\yuyuyu.txt");
       int   i=0;
       char  ch='0';
                   while((i=fis.read())!=-1)
                   {

                        ch=(char)i;
                        soc(ch);
                             /*
                             由于这里使用的是字节流对象操作,
                             此时这里能看到的只有数字和字母
                          */
                    }

                   fis.close();
         }
         public  static void  method1()throws  IOException
         {
                FileInputStream  fis=new FileInputStream("f:\\yuyuyu.txt");
                      int   num=fis.available();//获得字节个数
                      soc("num="+num);
                      byte[] b=new  byte[3];
                      int i=0;
                      //char ch =' ';
                      while((i=fis.read(b))!=-1)
                      {
                          //ch=(char)i;
                               soc(new String(b,0,b.length));
                               //这里就是按照字节数组b的字节打印出字符,所以不用强制类型转换
                      }
                      fis.close();
         }
         public  static void  method2()throws  IOException
         {
             FileOutputStream   fos=new FileOutputStream("f:\\yuyuyu.txt");
                   fos.write("kankan".getBytes());
                   //getBytes方法是String类自己的方法用于转变成字节
                   /*
                            字节写入流不存在flush方法,因为字节已经是最小操作对象,
                            字节写入流会直接写入文件。
                  */
                   fos.close();
         }
         public  static void  soc(Object  obj)
         {
             System.out.print(obj);
         }
}

——————分割线——————

/*

复制图片:

选用字节流

思路:

1,字节读取流与目标相关联

2,字节写入流创建图片文件

3,循环读写

4,关闭资源

*/

import java.io.*;
class Ioliou14
{
         public  static void  main(String[] args)
         {
            method2();
         }
         public  static void  method()
         {
             FileInputStream  fis=null;
             FileOutputStream  fos=null;
                   try
                   {
                     fis=new  FileInputStream("f:\\无标题23.png");
                     fos=new FileOutputStream("f:\\无标题23_copy.png");
                   byte[]  b=new byte[1024];
                   int  i=0;
                   while((i=fis.read(b))!=-1)
                   {
                      fos.write(b,0,i);
                   }
                   }
                   catch(IOException  e)
                   {
                            throw   new RuntimeException("复制图片出问题了");
                   }
                   finally
                   {
                            try
                            {
                                     fis.close();
                            }
                            catch(IOException  e)
                            {
                                     throw   new RuntimeException("fis.close();出问题了");
                            }
                        try
                        {
                                     fos.close();
                        }
                        catch (IOException  e2)
                        {
                        throw   new  RuntimeException("fos.close();出问题了");
                         }

                   }

         }
         public  static void  method2()
         {
                   FileInputStream  fis=null;
                   FileOutputStream  fos=null;
                   try
                   {
              fis=new FileInputStream("f:\\转码的视频\\死亡地带01.mp4");
              fos=new FileOutputStream("f:\\死亡地带01_copy.mp4");
              byte[] b=new  byte[1024];
              int i=0;
              while((i=fis.read(b))!=-1)
              {
               fos.write(b,0,i);
              }
                   }
                   catch(IOException  e)
                   {
                            throw  new RuntimeException("复制出问题了");
                   }
            finally
           {
                      try
                      {
                              fis.close();
                      }
                      catch (IOException  e)
                      {
                               throw new  RuntimeException("fis.close();出问题了");
                      }
                try
                {
                             fos.close();
                }
                catch (IOException  e2)
                {
                               throw  new  RuntimeException("fos.close();出问题");
                }

           }
         }
         public  static void  soc(Object  obj)
         {
             System.out.println(obj);
         }
}

——————分割线——————

/*

字节流也有自己的缓冲区技术:

BufferedInputStream

BufferedOutputStream

用法上和字符流差不多。

*/

import java.io.*;
class  Ioliou15
{
         public   static  void   main(String[] args)throws    IOException
         {
                    long start=System.currentTimeMillis();
                     method();
                    long end=System.currentTimeMillis();
                    soc("time="+(end-start));

         }
         public  static void  method()throws    IOException
         {
                   FileInputStream  fis=new FileInputStream("f:\\无标题23.png");
                   FileOutputStream  fos=new FileOutputStream("f:\\无标题23copy.png");
                   BufferedInputStream  bis=new BufferedInputStream(fis);
                   BufferedOutputStream  bos=new BufferedOutputStream(fos);
                   int  i=0;
                   while((i=bis.read())!=-1)
                   {
                       bos.write(i);
                            //这里就直接把i扔进去就可以,方便多了
                   }
                   bis.close();
                  bos.close();
         }
         public  static void  soc(Object  obj)
         {
             System.out.println(obj);
         }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 15:14:55

黑马程序员——22,字节流InputStream,OutputStream,字节流缓冲区技术,BufferedInputStream,BufferedOutputStream的相关文章

黑马程序员 - IO流(上)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO流用于处理设备间的数据传输按操作数据分:字节流和字符流按流向分:输入流和输出流IO流常用基类:字节流的抽象基类:InputStream OutputStream字节流的抽象基类:Reader Writer注意:这4个类派生出的子类名称均以其父类名作为子类名的后缀.数据的最常见体现形式是:文件下面代码演示常用的写入,读取操作. import java.io.*; class FWDemo{

黑马程序员——Java基础--IO流(一)---字符流和字节流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.IO流的介绍及体系 IO流用来处理设备之间的数据传输.java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中. 输入流和输出流相对于内存设备而言:将外设中的数据读取到内存中:输入.将内存中的数据写出到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,再对这个文字进行操作

黑马程序员_IO流1

异常1.异常的继承体系: java.lang.Throwable类,所有异常和错误的父类 Error类所有错误的父类 Exception类所有异常的父类 RuntimeException NullPointerException ClassCastException IndexOutOfBoundsException 错误,比较严重的问题,一旦出现了错误,程序根本不能运行,必须修改源代码. 异常,比较轻微的问题,一旦出现了异常,程序可以处理掉异常,继续运行.异常一般是程序的最后一个问题. 2.T

黑马程序员_IO流2

File类 1.File类 不属于流对象.作用:将机器上的路径和目录封装成一个File对象,提供了很多的方法和成员变量,让我们操作目录和路径   目录就是文件夹.路径,指由文件夹组成的到达文件夹的通道. 2.File类的静态成员变量   一共提供的4个变量,掌握的只有2个,跨平台 static String separator  结果\ Windows目录分隔符  Linux下 / static String pathSeparator 结果 ; Windows下的路径与路径之间的分隔符 Lin

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

黑马程序员——IO流总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 什么是IO流? IO流是用来处理设备之间的数据传输 有哪些流? 流按操作数据的种类分为:字符流和字节流 流按流的方向分:输入流和输出流 字节流的基类:InputStream和OutputStream 字符流的基类:Writer和Reader 常用写字符流:FileWriter,BufferedWriter,OutputStreamWriter,PrinterWriter 常用读字符流  : F

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——I/O流基础知识

I/O流 Io流 代表有能力产生数据的数据源对象或者有能力接收对象的数据接收端对象.字节流和字符流.中文字符也转编码表,jbk2万多中文字.unicode全世界的字符收录.乱码,两种不同形式的编码表.字符流里面的对象融合了编码表,以便别人使用的使用用你指定的编码方式. 基类:读和写~ 字节流 InputStream,OutputStream 字符流 Reader,Writer Writer 主力方法是writer().既然IO流是操作数据的,而数据的最常见体现形式是:文件. 需求:准备在硬盘上创

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF