流与文件

  • 可以从其中读入一个字节序列的对象称为输入流,而可以向其中写入一个字节序列的对象叫做输出流。抽象类InputStream,OutputStream构成了输入输出层次结构的基础。
  • InputStream和OutputStream实现类一般都要覆盖read和write方法,这两个方法在运行时都会阻塞,直至读到数据或者写完数据。为提高效率,可以使用available方法判断当前是否可读,再进行相关操作:
int byteAvailable = in.available();
if(byteAvailable){
  byte [] data = new byte[byteAvailable];
  in.read(data);
}
  • 读写结束后,要使用close来关闭流,关闭输出流的同时会冲刷输出流的缓冲区,若不关闭可能写出字节的最后一个包不能传递出去。此外也可以人为使用flush方法冲刷这些输出。
  • FileInputStream和FileOutputStream可以提供附着在一个磁盘文件上的输出流和输入流,构造函数中传入文件名或者文件的完整路径即可:
FileInputStream fin = new FileInputStream("employee.dat");

注意:windows风格路径要写为c:\windows\win.ini这种格式,而不能使用反斜杠,因为反斜杠是转义字符。

  • BufferedInputStream和BufferedOutputStream 创建一个带缓冲区的流。
  • 使用InputStreamReader类使用选定的unicode字符流转换为其他编码格式的字节流:
InputStreamReader in = new InputStreamReader(new FileinputStream("Kremlin.dat"),"ISO8859_5");
  • PrintWriter类实现文本输出:
PrintWriter out = new PrintWriter(new FileWriter("employee.txt"));
out.print("hello world");

这样就将字符串写到文件中了。PrintWriter和FileOutputStream的区别在于PrintWriter支持特定格式的输出字符串,而FileOutputStream则只支持字节级别上的读写。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容