对输入流和从文件中读取感到困惑
Confused about inputstreams and reading from files
我试图理解输入流和从文件读取背后的逻辑,但我不明白如何使用输入流从文件中读取。
我的理解是,当使用键盘等输入设备时,您通过输入流向系统发送输入数据。如果您正在从输入流中读取,那么您读取的不是当时正在发送到系统的输入数据吗?
如果我们使用以下代码创建输入流:
FileInputStream test = new FileInputStream("loremipsum.txt");
并且如果我们尝试使用 test.read();
从新创建的输入流中读取数据,那么输入流中有没有数据流?由于当时没有从输入设备输入输入数据,但事先已经输入了。我错过了什么吗?在我看来,输入流以两种不同的方式使用:Java 使用输入流从源读取数据,使用输入设备将数据输入到源。
Java 流是一个通用概念/接口 - 您需要打开的数据流,然后从中读取数据(或将数据写入输出流),然后关闭。基本流只支持顺序读/写,不支持随机访问。此外,当您尝试从流中读取数据时,数据可能随时可用,也可能不可用,因此读取可能会或可能不会阻塞。
这种抽象允许我们使用相同的方法,无论我们从哪里读取数据——它可能是键盘、文件、网络连接、另一个程序的输出,甚至是某种生成无限序列的生成器数据的。简而言之,从文件中读取输入的行为就像有人在后台打开文件并在键盘上键入其内容一样非常快。
Java中有一些方法可以以其他方式读取文件(例如随机访问而不是顺序访问),但是如果您需要从头到尾读取文件,流是一种有用的抽象。
我试图理解输入流和从文件读取背后的逻辑,但我不明白如何使用输入流从文件中读取。
我的理解是,当使用键盘等输入设备时,您通过输入流向系统发送输入数据。如果您正在从输入流中读取,那么您读取的不是当时正在发送到系统的输入数据吗?
如果我们使用以下代码创建输入流:
FileInputStream test = new FileInputStream("loremipsum.txt");
并且如果我们尝试使用 test.read();
从新创建的输入流中读取数据,那么输入流中有没有数据流?由于当时没有从输入设备输入输入数据,但事先已经输入了。我错过了什么吗?在我看来,输入流以两种不同的方式使用:Java 使用输入流从源读取数据,使用输入设备将数据输入到源。
Java 流是一个通用概念/接口 - 您需要打开的数据流,然后从中读取数据(或将数据写入输出流),然后关闭。基本流只支持顺序读/写,不支持随机访问。此外,当您尝试从流中读取数据时,数据可能随时可用,也可能不可用,因此读取可能会或可能不会阻塞。
这种抽象允许我们使用相同的方法,无论我们从哪里读取数据——它可能是键盘、文件、网络连接、另一个程序的输出,甚至是某种生成无限序列的生成器数据的。简而言之,从文件中读取输入的行为就像有人在后台打开文件并在键盘上键入其内容一样非常快。
Java中有一些方法可以以其他方式读取文件(例如随机访问而不是顺序访问),但是如果您需要从头到尾读取文件,流是一种有用的抽象。