gpt4 book ai didi

java - BufferedReader 仅读取多行文件中的一行

转载 作者:行者123 更新时间:2023-12-02 01:58:15 25 4
gpt4 key购买 nike

我尝试存档将从 BufferedReader 读取多行文件。但是这个 BufferedReader 只读取一行并退出他的 while() 。在他读到这个之前,同一个类的另一个方法应该已经写在这个文件中(不是同时),大部分都不止一行。该文件包含不同类型的变量,例如int[]intdouble[]String。在一个对象的末尾,或者几乎只是我必须收集的可以重新计算整个对象的数据,ObjectOutputStream 会粘贴 "\n"。我只是在这个文件中写入解析后的字符串。

就我而言,这是 ObjectInputStream 的解决方法,因为该流每次都会抛出 EOFException。对于那些不知道EOFException的人:如果读者在阅读时到达文件末尾,则会抛出该异常。

我尝试过:

  • 将 BufferedReader 的输入字符串设置为另一行
  • .close() Reader 并使其new
  • 设置while(1)
  • 写入其他数据类型,例如整个对象但一切都没有任何改变。 BufferedReader 仅读取一行,ObjectInputStream 抛出 EOFException
LinkedList<SomeAnotherSelfMadeClass> list;
File file = new File(fullPath) // fullPath = absolute path to the file
FileInputStream fileInputStream;
BufferedReader bufferedReader;

public static LinkedList<SomeAnotherSelfMadeClass> readFile()
{
list = new LinkedList<SomeAnotherSelfMadeClass>();
fileInputStream = new FileInputStream(file); // could be FileReader
bufferedReader = new BufferedReader(fileInputStream);
String helper, anotherHelper;

while ((helper = bufferedReader.readLine()) != null)
{
while ((anotherHelper = scanner.hasNext()) != null)
// here's some code with scanner-things, it shouldn't be necessary to
// know. In fact the scanner help to gather the data from the file and
// create an object of SomeAnotherSelfMadeCLass and put it into the list
}

bufferedReader.close();
fileInputStream.close();

return list;
}

我该怎么做才能读取文件的所有行并重新计算粘贴到其中的对象?

我也不知道;使用ObjectInputStream或使用BufferedReader更好?我该怎么做才能使 ObjectInputStream 不抛出 EOFException (每次我使用 ObjectInputStream 时,我都通过 编写了整个对象>ObjectOutputStream)?

P.S.:我家里没有互联网自动提款机,所以我可能需要一段时间才能回答。

最佳答案

尝试使用这种代码结构..

BufferedReader objReader = null;
public static LinkedList<SomeAnotherSelfMadeClass> readFile()
{
list = new LinkedList<SomeAnotherSelfMadeClass>();
try {

objReader = new BufferedReader(new FileReader(fullPath));

while ((helper= objReader.readLine()) != null) {
...........
System.out.println(helper);//just for checking

while ((anotherHelper = scanner.hasNextLine()) != null){
.....
....
}
}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {
if (objReader != null)
objReader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}

关于java - BufferedReader 仅读取多行文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57388348/

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