gpt4 book ai didi

java - 在字符缓冲区的情况下,Java 中的 reader 内部如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:42 25 4
gpt4 key购买 nike

public class ReadFileUsingFileReader {

public static void main(String[] args) {
String path = "D:\\sticky_notes.txt";
readFileUsingFileReader(path);
}

public static void readFileUsingFileReader(String file) {

try {
//read the file
FileReader reader = new FileReader(file);
char[] buffer = new char[1024];
int noOfCharsRead = reader.read(buffer);
while (noOfCharsRead != -1) {
System.out.println(String.valueOf(buffer, 0, noOfCharsRead));
noOfCharsRead = reader.read(buffer);
}
reader.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

这里变量“reader”从文件中读取前 1024 个字符并将其保存到缓冲区中。现在再次在 while 循环中,它读取接下来的 1024 个字符。我的问题是,第二次阅读器如何知道应该从哪个索引开始读取下一个字符。是否有某种标志,如果是,如何访问它。

最佳答案

这是实现打开文件概念的类的目的。有一个底层结构包含当前位置,就像读书时的书签一样。 Java FileReader 不提供对它的访问,因为 Readers 几乎只是让您从头到尾阅读。所以当前位置正是你实际读取的字节数。

但是,如果您使用 RandomAccessFile,您可以在其上调用 long getFilePointer()voideek(longposition) 方法来访问它。 RandomAccessFile 是唯一可以让您控制输入/输出发生位置的文件操作类。

---- 编辑(感谢 EJP)----

这仅适用于包java.io。还有另一个高级 IO 包 java.nio,其情况略有不同。

关于java - 在字符缓冲区的情况下,Java 中的 reader 内部如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49609487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com