java储存多行文件_java - BufferedReader仅读取多行文件中的一行 - 堆栈内存溢出

我试图归档将从BufferedReader读取多行文件。 但是此BufferedReader只读取一行并退出其while() 。 在他读之前,应该在该文件中写入同一类的另一种方法(而不是同时),通常要多一行。 该文件包含不同类型的变量,例如int[] , int , double[] , String 。 在一个对象的末尾,或者几乎只是我要收集的可以重新计算整个对象的数据的末尾, ObjectOutputStream粘贴"\\n" 。 我只是在该文件中编写了解析的字符串。

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

我试过了:

将BufferedReader的输入字符串设置为另一行

.close()阅读器并将其new

设置while(1)

编写其他数据类型,例如整个对象,但全部不做任何更改。 BufferedReader仅读取一行,而ObjectInputStream抛出EOFException 。

LinkedList list;

File file = new File(fullPath) // fullPath = absolute path to the file

FileInputStream fileInputStream;

BufferedReader bufferedReader;

public static LinkedList readFile()

{

list = new LinkedList();

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编写整个Object的)?

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是对你的问题的回答: Java 提供了多种读取文件的方法,下面是其的五种: 1. BufferedReader 使用 BufferedReader 可以按行读取文件,它的读取效率比较高。以下是一个例子: ``` try (BufferedReader br = new BufferedReader(new FileReader("filename.txt"))) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } ``` 2. FileInputStream 使用 FileInputStream 可以按字节读取文件,适合读取二进制文件。以下是一个例子: ``` try (FileInputStream fis = new FileInputStream("filename.txt")) { byte[] buffer = new byte[1024]; int n = 0; while ((n = fis.read(buffer)) != -1) { System.out.write(buffer, 0, n); } } ``` 3. FileReader 使用 FileReader 可以按字符读取文件,适合读取文本文件。以下是一个例子: ``` try (FileReader fr = new FileReader("filename.txt")) { char[] buffer = new char[1024]; int n = 0; while ((n = fr.read(buffer)) != -1) { System.out.print(buffer, 0, n); } } ``` 4. Scanner 使用 Scanner 可以按照指定的分隔符读取文件,适合读取文本文件。以下是一个例子: ``` try (Scanner scanner = new Scanner(new File("filename.txt"))) { scanner.useDelimiter(System.getProperty("line.separator")); while (scanner.hasNext()) { System.out.println(scanner.next()); } } ``` 5. RandomAccessFile 使用 RandomAccessFile 可以读取任意位置的文件内容,适合读取文件。以下是一个例子: ``` try (RandomAccessFile raf = new RandomAccessFile("filename.txt", "r")) { byte[] buffer = new byte[1024]; int n = 0; while ((n = raf.read(buffer)) != -1) { System.out.write(buffer, 0, n); } } ``` 以上就是 用Java读取文件的5种方法,包括 BufferedReader,FileInputStream,文件,扫描仪,RandomAccessFile。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值