我有一个数据文件,由多行数据组成,以换行符分隔。我需要将文件内容读入字符串数组,并希望以正确的大小高效地创建数组。最有效的方法是:
- 使用 ArrayList,
- 使用 BufferedReader 浏览文件,标记开始位置并计算行数,然后复位到标记位置,
- ???
使用 ArrayList
(第一种选项)读取文本文件,可以使用 BufferedReader
的 readLine()
方法逐行读取。这种方法简单、高效且易于维护。
List<String> allLines = Files.readAllLines(Paths.get(filename), Charset.forName("iso-8859-1"));
- Kennet这取决于文件的大小和您所需的效率:
ArrayList 是一个简单而高效的选项。只需创建一个新实例并逐个从 BufferedReader 添加字符串,然后在该列表上调用 toArray()。
将整个文件作为字符串读取并手动拆分(我认为更有效),或使用 java.lang.String 提供的正则表达式拆分成字符串数组。如果您手动执行此操作,可以计算“\r\n”符号的数量并创建大小精确的数组(即,您将节省数组列表重新分配的时间)。
创建一个计算已写入字符数的Writer,并使用它来包装您的OutputStreamWriter。
注意:将文本保存到文件的正确方法是:
new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), encoding ) ) );
编码很重要,通常为“UTF-8”。
这个链给了你两个地方可以注入你的包装器:你可以包装writer以获取字符数或内部OutputStream
以获取字节数。
3:使用Scanner(自1.5版本以来):懒惰(但恶意的)程序员工具,具有所有用于字符串扫描目的的选项,并适用于所有文件。