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

标签 java bufferedreader

我尝试存档将从 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/

相关文章:

java - 在 JFrame 中一次显示一个对象,或逐帧显示对象

java - resultSet.next() 返回 false,即使表已填充

java - 如何在 Java Servlet 中使用 Session?

java - (Java) 套接字的 BufferedReader 一次仅读取一行,在接收下一行之前需要客户端输入

Java,FileReader()似乎只读取文本文档的第一行?

java - 在 Android 中保存/加载游戏文件

java - Weblogic 未检测到来自负载均衡器的 https

java - 为什么 Java HashMap 变慢了?

java - 阻止 BufferedWriter 覆盖现有文本行

java - 使用 readline 时 BufferedReader 不解析 ascii 控制字符