java IO 简略样例

读文件

1
2
3
4
5
6
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\admini\\Desktop\\h5(7).html");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

byte[] data = new byte[bufferedInputStream.available()]; //获得流的长度
bufferedInputStream.read(data);
String template = new String(data);

需要注意的是,可以不需要BufferedInputStream 直接使用FileInputStream来读取,BufferedInputStream 继承了FileInputStream,BufferedInputStream 效率更高

写文件

1
2
3
4
5
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\admini\\Desktop\\123.txt");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
bufferedOutputStream.write("asdasdasd".getBytes());
bufferedOutputStream.flush();
bufferedInputStream.close();

需要注意的是,可以不需要BufferedOutputStream 直接使用FileOutputStream 来写入
但是,FileOutputStream 每一次写都是一次io,效率低,BufferedOutputStream 的write()会现将数据缓存,然后写入,然后再缓存再写入,减少io
非常重要的一点是,触发写入的时间是缓冲区填满的时候,当流的最后一段没有将缓冲区填满,那么就不会触发写入,导致数据丢失
这时需要使用flush()方法强制将将缓冲区数据写入,并且清空缓冲区,调用close()方法也可以实现这个功能,因为close()方法中调用flush()方法

ref https://www.imooc.com/article/10791