如果我的文件行包含以逗号分隔的元素,我是否可以将缓冲的阅读器自动插入列表中?
或者我是否readline
然后调用string.split
方法?
E.g。我的档案有。
1, dog, abc, 10pm
2, cat, abc, 11pm
我想从我的文件中列出一个列表,以便我可以单独调用这些元素
答案 0 :(得分:1)
最简单的方法是首先读取一行,然后使用split()
,因为所有行的格式完全相同。并使用ArrayList
的{{1}}制作列表清单。
使用BufferedReader的示例:
String[]
使用扫描仪(不完整示例):
import java.util.*;
import java.io.*;
class Test {
public static void main(String[] args) {
ArrayList<ArrayList<String>> myList = new ArrayList<>();
try {
BufferedReader in = new BufferedReader(new FileReader("foo.txt"));
while(in.ready()) {
String line = in.readLine();
String[] parts = line.split(", ");
ArrayList<String> lineList = new ArrayList<>();
for (String s : parts) {
lineList.add(s);
}
myList.add(lineList);
}
}
catch(Exception e) {
}
for(ArrayList<String> elem : myList) {
for(String item : elem) {
System.out.print(item + " ");
}
System.out.println();
}
}
}
答案 1 :(得分:0)
据我所知,除非你实现自己的BufferedReader ...尽管可能有一个在Java 8中使用lambda
答案 2 :(得分:0)
BufferedReader
的界面不支持直接读入列表而不支持列表列表。你将至少自己做分裂。
从java8
开始,您可以使用BufferedReader.lines()获取您必须拆分的行流,转换为列表并添加到列表列表中:
public List<List<String>> readAsListOfLists8(String file) throws IOException, FileNotFoundException {
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
return br.lines().map(line -> Arrays.asList(line.split("[, ]+")))
.collect(Collectors.toList());
}
}
如果您在java7
中投放,可以使用Files.readAllLines获取行列表:
public List<List<String>> readAsListOfLists7(String file) throws IOException, FileNotFoundException {
List<List<String>> ll = new ArrayList<>();
for(String line : Files.readAllLines(Paths.get(file))) {
ll.add(Arrays.asList(line.split("[, ]+")));
}
return ll;
}
对于较低版本的java,请使用您的解决方案。