Input Streams.read()究竟如何工作?

时间:2020-01-30 13:24:22

标签: java stream inputstream

我有以下代码:

public static void main(String[] args) throws Exception {

 FileInputStream inputStream = new FileInputStream("c:/data.txt");

 FileOutputStream outputStream = new FileOutputStream("c:/result.txt");

 while (inputStream.available() > 0) {
  int data = inputStream.read(); 
  outputStream.write(data); 
 }

 inputStream.close(); 
 outputStream.close();
}

我不明白以下话: int data = inputStream.read();

获取文件c:/data.txt的字节,逐字节读取,然后在变量数据中自动串联,或者一次inputStream.read()一次读取文件c:/data.txt并分配一切都交给数据变量了吗?

1 个答案:

答案 0 :(得分:4)

来自JavaDoc

FileInputStream从文件系统中的文件获取输入字节。 FileInputStream用于读取原始字节流,例如图像数据。 要读取字符流,请考虑使用FileReader

问题::获取文件c:/data.txt的字节,逐字节读取,然后在变量中自动串联 数据或inputStream.read()读取文件c:/data.txt 全部位于 一次并将所有内容分配给数据变量?

要回答这个问题,请举个例子:

try {
  FileInputStream fin = new FileInputStream("c:/data.txt");
  int i = fin.read();
  System.out.print((char) i);
  fin.close();
} catch (Exception e) {
  System.out.println(e);
}

在运行上述程序之前,已创建一个data.txt文件,其文本为:Welcome to Stackoverflow

执行上述程序后,控制台将打印单张 87文件中的字符(字节形式),很清楚 指示FileInputStream#read用于读取字节 输入流中的数据。


因此,FileInputStream通过byte读取数据byte

相关问题