我尝试存档将从 BufferedReader 读取多行文件。但是这个 BufferedReader 只读取一行并退出他的 while() 。在他读到这个之前,同一个类的另一个方法应该已经写在这个文件中(不是同时),大部分都不止一行。该文件包含不同类型的变量,例如int[]
、int
、double[]
、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/