Java中的文件阅读器
Java中的文件阅读器
在Java中:我正在读取一个名为fn的文件。它是一个文本文件,第一个数字表示行数和字符数:\n示例:\n
4 AFBA\n BBBB\n EFHE\n EFJH\n
\n每4个字符后面都有一个换行符,这样持续4行。\n我目前的进展是:\n
File fp = new File(fn); FileReader fr = new FileReader(fp); BufferedReader bfr = new BufferedReader(fr);
\n我如何创建一个Java算法将这些数据存储在数据结构中,比如ArrayList、数组、栈等等。\n非常感谢。我刚开始学习编程,所以如果这个问题不符合Stack Overflow的说法,请原谅。
(File Reader in Java)问题的出现的原因是想要在Java中使用文件阅读器(FileReader),但是在示例代码中缺少了文件路径(fn)的定义。
解决方法是在示例代码中添加文件路径的定义,如下所示:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ReadFile { public static void main(String[] args) throws IOException { String fn = "文件路径"; File fp = new File(fn); FileReader fr = new FileReader(fp); BufferedReader bfr = new BufferedReader(fr); Listlist = new ArrayList<>(); String s = ""; while ((s = bfr.readLine()) != null) { list.add(s); } System.out.print(list); } }
在上述代码中,我们添加了一个字符串变量fn来定义文件路径。您可以将"文件路径"替换为您要读取的文件的实际路径。
这样,您就可以使用Java的文件阅读器(FileReader)来读取指定文件的内容了。
在Java中,有多种方法可以读取文件。一种常见的方法是使用循环逐行读取文件,并使用"\n"来识别换行符。然而,这种方法可能效率较低且容易出错。
为了解决这个问题,可以使用Java 8的Stream API和nio库,将每一行作为一个对象存储在集合中。以下是一个示例代码:
import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream; import java.util.*; public class streamFileRead { public static void main(String args[]) { String fileName = "drive://location//fn.txt"; Listlist = new ArrayList (); try (Stream stream = Files.lines(Paths.get(fileName))) { list = stream.collect(Collectors.toList()); } catch (IOException e) { e.printStackTrace(); } } }
这种方法比使用循环逐行读取文件并识别换行符的方法更快速和可靠。
另外,如果使用nio库,还可以使用`Files.readAllLines`方法来读取文件的所有行,该方法的用法可以参考[官方文档](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllLines(java.nio.file.Path,%20java.nio.charset.Charset))。
还有一种方法是使用`BufferedReader#lines`方法,该方法也可以逐行读取文件。需要注意的是,`BufferedReader#lines`方法属于`java.nio`库,而不是Apache库。
通过使用Java 8的Stream API和nio库,可以更高效地读取文件,并将每一行作为对象存储在集合中。这种方法比循环逐行读取文件的方法更可靠。