public void testWriter(){
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("D://demo.txt");
fileWriter.write("ccc");
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fileWriter != null){
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
上述例子中,如果没有关闭流,那么是不会在文本中输出“ccc”的。
public void testOutputStream(){
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream("D://test.txt");
outputStream.write("aaa".getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
if(outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
而如果用OutputStream字节流的话,即使不关闭流,也会在文本中输出“aaa”.
原因:字符流操作时,使用了缓冲区。所以在关闭字符流的时候会将缓冲区的内容输出,但是如果没有关闭流,那么就不会输出了。而字节流不管有没有关闭流,都会输出。所以:字符流使用了缓冲区,字节流没有使用缓冲区。