java IO流

IO流作用:用来处理设备间的数据传输。

                  Java对数据的操作是通过流的方式。

流按操作类型分为两种:

                                   *  字节流:可操作任何类型的数据,因为在计算机中任何类型的数据都是以字节形式存储的。

                                   *  字符流:只能操作纯字符数据,比较方便。

字节流抽象父类:InputStream    OutputStream

字符流抽象父类:Reader             Writer

                           

                    FileInputStream类:InputStream子类。

                                                     int read():从该输入流中读取一个字节的数据,每次读取指针向后移。

                 *(面试):read()方法读的是一个字节,为什么返回的却是int 类型而不是byte类型呢?

                                  字节输入流可操作任意类型的数据,对于音频,图片,视频等类型的文件底层都是以二进制数据存储的。如果返回的是byte类型,有可能在读到中间时遇到                                              11111111。这就是byte类型的-1,然而程序在读到-1时就结束读取了。后面的数据就没有读取到。所以读取时用int类型接收。

                                                    int available():返回一个文件的所有字节数。

                                                    int read(byte []arr) :每次最多能读取arr数组长度的字节数。

                     FileOutputStream:OutputStream子类。

                                                  void  write(int b):将指定字节写入文件输出流中。虽然写入的是一个int数,但最终到文件上的是一个字节。会自动去掉前三个8位。

                                               FileOutputStream在创建对象的时候,所关联的文件如果没有会自动创建。

                                              构造方法: FileOutputStream(String name,boolean bol) 如果想要在文件中续写内容而不是覆盖文件之前的内容,第二个参数就设置为true.

            

                 字符流可拷贝文件,但不推荐使用。因为在读取时会把字节流转换为字符流。在写出时把字符流又转换为字节流。

                字符流不能拷贝非纯文本文件,因为在转换过程中有可能找不到对应的码表值。

 

                  

                 

posted @ 2018-08-14 22:44  我的java编程学习之路  阅读(200)  评论(0编辑  收藏  举报