个人认为,java中的流比较多,也很难记,所以,现在,把自己用到过的流总结一下,便于记忆。
FileOutputStream说明:主要用来写文件
1、 File file = new File("test.txt");
FileOutputStream fos = new FileOutputStream(file);
2、 FileOutputStream fos = new FileOutputStream("test.txt");
FileInputStream
说明:读取文件
1、 FileInputStream fis = new FileInputStream("test.txt");
2、 File file = new File("test.txt");
FiltInputStream fis = new FileInputStream(file);
注:来源于TFTPDemo
Reader
1、 File file = new File("test.txt");
InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
char[] temp=new char[64];
int num=0;
while((num=reader.read(temp)!=-1){
//do sth.
}
File file = new File("test.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String temp=null;
while((temp=reader.readLine())!=null){
//do sth.
}
reader.close();
3、 BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
注:Reader的子类:BufferedReader, InputStreamReader
InputStreamReader的子类:FileReader
BufferedReader的子类:LineNumberReader
Writer
1、PrintWriter out
= new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
注:Writer的子类:BufferedWriter, OutputStreamWriter
OutputStreamWriter的子类:FileWriter
BufferedWriter的子类:没有
按行读的有,返回的都是String:
java.io.BufferedReader.readLine()
java.io.DataInput.readLine()
java.io.DataInputStream.readLine()
java.io.LineNumberReader.readLine()
java.io.ObjectInputStream.readLine()
java.io.RandomAccessFile.readLine()
javax.imageio.stream.ImageInputStream.readLine()
javax.imageio.stream.ImageInputStreamImpl.readLine()
规律:
在java中关于Stream的类都是读写字节(byte)的,比如InputStream/OutputStream及其子类
关于Reader/Writer的类都是读写字符(Character)的,比如Reader/Writer及其子类。
InputStreamReader
An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset.