最近在看IO流部分,觉得这一部分东西很多,很麻烦,最主要的是我觉得很杂,所以想总结一下,不然是糊里糊涂的,根本是不会用的.
IO流主要分为字节流和字符流(比较常用),而且为了应用程序的方便性,Java还提供了很多包装流类,因为一般节点流类写到目标设备都是以byte或者char的形式,这样很不方便,应用程序必须接受byte或者char数据类型,有了包装流类,就可以在节点流类和应用程序之间加入包装流类来对数据类型进行处理,比如说:
应用程序->包装流类->节点流类->目标设备(反之亦然);
这样应用程序就可以传入不同的数据类型,int ,float,double,char,String都可以,也可以将流设置缓存等等,数据进入包装流类就进行了包装,将不同的数据类型转成byte或者char,传给节点流类,在传入目标设备.这样给用户带来了极大的方便性.
1.很容易可以看出,一个包装流类的构造函数就要传给他一个节点流类或者字符流类的参数.
以BufferedReader的构造函数来做个例子:
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
还有其他的包装流类:
DataInputStream(InputStream in) DataoutputStream(OutputStream out)........
2.而对于节点流类的构造函数,先撇开包装流类不看:应用程序->节点流类->目标设备,它的构造函数将传一个关于目标信息的参数.
以FileReader为例: FileReader(File file); 传递的参数是一个File的文件名.
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
这个构造函数则是先讲System.in这样一个字节流->字符流->缓冲字符流.
为了读写数据的方便,IO流中还有很多其他的流类来读写不同的数据类型:
CharArrayReader(char [] buf) CharArrayWriter().............
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
还有其他的包装流类:
DataInputStream(InputStream in) DataoutputStream(OutputStream out)........
2.而对于节点流类的构造函数,先撇开包装流类不看:应用程序->节点流类->目标设备,它的构造函数将传一个关于目标信息的参数.
以FileReader为例: FileReader(File file); 传递的参数是一个File的文件名.
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
这个构造函数则是先讲System.in这样一个字节流->字符流->缓冲字符流.
为了读写数据的方便,IO流中还有很多其他的流类来读写不同的数据类型:
CharArrayReader(char [] buf) CharArrayWriter().............
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
还有其他的包装流类:
DataInputStream(InputStream in) DataoutputStream(OutputStream out)........
2.而对于节点流类的构造函数,先撇开包装流类不看:应用程序->节点流类->目标设备,它的构造函数将传一个关于目标信息的参数.
以FileReader为例: FileReader(File file); 传递的参数是一个File的文件名.
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
其中的参数FileReader就是一个节点流类(只能在文件间传输char类型的数据)
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
这个构造函数则是先讲System.in这样一个字节流->字符流->缓冲字符流.
为了读写数据的方便,IO流中还有很多其他的流类来读写不同的数据类型:
CharArrayReader(char [] buf) CharArrayWriter().............