我应该从文本文件中读取几行,然后将它们存储在arraylist中。 做这种事的最好方法是什么? 我必须稍后才能检查每个字符。
答案 0 :(得分:0)
以下是完成工作的简单代码段:
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class ParseFile
{
public static void main (String[] args)
{
Scanner scanner = null;
ArrayList<String> store = new ArrayList<String>();
try {
scanner= new Scanner(new File("input.txt"));
while (scanner.hasNext()) {
store.add(scanner.next());
}
} catch (Exception e) {
e.printStackTrace();
}
finally{
scanner.close();
}
for (String item : store) {
System.out.println(item);
}
}
}
答案 1 :(得分:0)
使用Apache commons io List lines = FileUtils.readLines(file, "UTF-8");
答案 2 :(得分:0)
您可以使用Files.readAllLines(Path path)
Path path = //...
ArrayList<String> lines = new ArrayList<>(Files.readAllLines(path, Charset.defaultCharset()));
但是使用这种方法,你可以在内存中有两个列表短时间内两次(即在执行ArrayList
构造函数期间)。
如果您不需要可修改的列表,并且不需要列表的类型为ArrayList
List<String> lines = Files.readAllLines(path, Charset.defaultCharset());
当然也有效。
在 java 8 中,您当然也可以使用Stream
:
final ArrayList<String> lines = new ArrayList<>();
try (Stream<String> lineStream = Files.lines(path)) {
lineStream.forEach(lines::add);
}
这样,这些行在读取后会直接添加到列表中。
答案 3 :(得分:0)
试试这个:
FileReader in = null;
try
{
in = new FileReader("C:/Test.txt");
BufferedReader br = new BufferedReader(in);
ArrayList<String> lines = new ArrayList<String>();
String s = br.readLine();
while (s != null)
{
lines.add(s);
s = br.readLine();
}
in.close();
}
catch (Exception ex)
{
Logger.getLogger(Read.class.getName()).log(Level.SEVERE, null, ex);
}
}