有关IO流的部分整理

1.IO流基本概念

      按流向分为:输入流,输出流

      Java用于操作流的都在IO包中

      按操作类型分为:字符流,字节流。

2.IO流的常用父类

      字节流常用父类

              InputStream

              OutputStream

      字符流常用父类

              Reader

              Writer

3.IO程序书写

      使用前,导入IO包中的类

      使用时,要进行异常处理

      使用后,要释放资源

FileInputStream

     read()一次读取一个字节

     当读取到的数据为空时,返回-1

     对象名.close关闭流释放资源

read()方法读取的是一个字节,为什么返回的是int,而不是byte

       因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件都是以二进制的形式存储的,如果每次读取都返回byte类型,有可能在读取时遇到11111111,那么这个11111111是byte类型的-1,程序就会停止,后面的程序就无法读取,所以在读取的时候用int类型接收,如果11111111会在前面补上24个0凑足4字节,那么byte类型的-1就变成iny=t类型的255了,这样就可以保证整个数据读完,而结束标记是-1


FileOutputStream

     输出时,如果没有文件会自动创建一个,如果有的话会将文件先清空

     如果想续写就在第二个参数传true

     write()写出时会自动将前面的三个字节去掉,写出一个byte

拷贝1:

    FileInputStream fis = new FileOutputStream("文件.jpg");

    FileOutputStream fos = new FileOutputStream("Copy.jpg");

    int b;

    while((b = fis.read()) != -1){

              fos.write(b);

}

    fis.close();

    fos.close();


拷贝2:

         FileInputStream fis = new FileInputStream();

         FileOutputStream fos = new FileOutStream();

         byte[] arr = new byte(fis.avaiable);


         fis.read(arr);

         fos.write(arr);

       

         fis.close();

         fos.close();

你可能感兴趣的:(有关IO流的部分整理)