对输入流和从文件读取感到困惑

时间:2018-10-12 19:11:32

标签: java inputstream computer-science

我试图了解输入流和从文件读取的逻辑,但是我不明白如何使用输入流从文件读取。

我的理解是,当使用键盘等输入设备时,您会通过输入流将输入数据发送到系统。如果您正在从输入流中读取数据,那么您不是在读取当时正在发送到系统的输入数据吗?

如果我们使用以下代码创建输入流:

FileInputStream test = new FileInputStream("loremipsum.txt");

如果我们尝试使用test.read();从新创建的输入流中读取数据,那么有什么数据流过输入流?由于当时尚未从输入设备输入任何输入数据,但已经预先输入了数据。有什么我想念的吗?在我看来,输入流有两种不同的用法:使用输入流从源读取数据的Java和用于将数据输入到源的输入设备的Java。

1 个答案:

答案 0 :(得分:3)

Java流是一个通用概念/接口-需要打开的数据流,然后从中读取数据(或将数据写入输出流),然后关闭。基本流仅支持顺序读取/写入,无随机访问。另外,当您尝试从流中读取数据时,数据可能会或可能不会立即可用,因此读取可能会或可能不会阻塞。

此抽象使我们可以使用相同的方法,而不管我们从何处读取数据-它可能是键盘,文件,网络连接,其他程序的输出,甚至是生成无穷数据序列的某种生成器。简而言之,从文件中读取输入的行为与后台有人打开文件并在键盘上非常快键入其内容一样。

Java中有多种方法可以以其他方式读取文件(例如,随机访问而不是顺序访问),但是如果您需要从头到尾读取文件,则流是一种有用的抽象方法。