流总结
字节流:
InputStream:字节输入流的超类。它中定义的读取字节的read方法
FileInputStream:专门负责从文件中读取字节数据。
BufferedInputStream:字节输入流的缓冲区。
OutputStream:字节输出流的超类。定义类的写字节的数据的write方法
FileOutputStream:专门负责给文件中写字节数据。
BufferedOutputStream:字节输出流的缓冲区。
字符流:
Reader:字符输入流的超类。定义的读取字符的read方法
InputStreamReader:将字节根据指定的编码表转成字符。字节转字符的桥梁,属于输入流
FileReader:便捷的字符文件输入流,使用本地默认的编码表。
BufferedReader:其中有readLine方法可以读取一行数据,得到的是一个字符串
Writer:字符输出流的超类,定义的写字符数据的write方法
OutputStreamWriter:将字符数据根据指定的编码表转成字节数据,字符转字节的桥梁,属于输出流。
FileWriter:便捷的字符文件输出流,使用本地默认的编码表。
BufferedWriter:newLine方法可以写一个换行。
总结输入流的模版代码:
一次读取一个字节(字符):
FileInputStream fis = newFileInputStream(“文件”);
FileReader fr = newFileReader(“文件”);
int ch = 0;
while( ( ch = fis.read())!=-1 ){
}
fis.close(); fr.close();
一次读取多个字节(字符):
FileInputStream fis = newFileInputStream(“文件”);
FileReader fr = newFileReader(“文件”);
int len = 0;
byte[] buf = new byte[1024]; 或 char[] cbuf= new char[1024];
while( ( len = fis.read(buf)) !=-1 ){
}
fis.close(); fr.close();
一次读取一行数据
BufferedReader bufr = newBufferedReader( new FileReader(“文件”) )
BufferedReader bufr = newBufferedReader( new InputStreamReader( new FileInputStream (“文件”) ))
String line = null;
while( ( line =bufr.readLine() )!=null ){
}
bufr.close();
操作规律总结
1、确定流的操作的数据特点:
数据是字符数据还是字节数据。
字符数据:字符流
字节数据:字节流
2、确定操作的方向:
读取操作:输入流
写出操作:输出流
3、操作的数据编码表是否一致?
不一致,就需要使用到转换流。
4、程序是否需要提高效率:
加上Buffered相关的流对象。