【发布时间】:2018-01-09 15:42:30
【问题描述】:
我想将文件中的每一行都保存到一个数组列表中。 当我只有一个文件时它工作正常,但如果我读取多个文件,每个文件的第一行都保存在同一个数组中...... 代码:
public static void main(String[] args)
{
File folder = new File("\\Documents\\Files");
File[] listOfFiles = folder.listFiles();
for(File file : listOfFiles) {
dosomething(file);
}
}
public static void dosomething(File file)
{
try {
List<String[]> lines = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(file));
String[] tmp;
String line;
while ((line = reader.readLine()) != null) {
tmp = line.split("\n");
if (tmp.length > 0) {
lines.add(tmp);
}
}
reader.close();
System.out.println(lines.get(0));
}
....
}
结果:
[Ljava.lang.String;@15db9742
[Ljava.lang.String;@6d06d69c
[Ljava.lang.String;@7852e922
在我的文件夹“文件”中,我有 3 个 file.txt,每个文件都包含文本行。 所以我想将每个文件的每一行都保存到一个新的数组中。但是为什么我没有保存 3 行而不是 1 行?
有人可以帮我吗?
谢谢
现在我是这样尝试的:
public static String [] stringArr;
public static void main(String[] args)
{
File folder = new File("\\Documents\\Files");
File[] listOfFiles = folder.listFiles();
for(File file : listOfFiles) {
dosomething(file);
}
List<String> lines = new ArrayList<>();
for(String s : stringArr)
{
lines.add(s);
}
for(String t : lines)
{
System.out.println(t);
}
}
public static void dosomething(File file)
{
try {
List<String> list= new ArrayList<>();
BufferedReader in = new BufferedReader(new FileReader(file));
String str;
while((str = in.readLine()) != null){
list.add(str);
}
stringArr = list.toArray(new String[0]);
}
reader.close();
}
结果:如果在 dosomthing 方法中执行 stringArr 的 for 循环,每个文件的每个内容都完美保存在我的 stringArr 中....但是现在如果我在 Main 方法中执行 for 循环,我只会得到内容一个文件回来...
【问题讨论】:
-
你需要正确打印数组
-
另请查看
Files.readAllLines -
你可以把ArrayList放在main中,因为每次进入方法都会创建一个新的,所以对于每个文件
-
你不应该
line.split("\n"),因为reader.readLine()已经在为你做这件事了 -
你创建的每个迭代
arraylist和array这就是你得到三个的原因。您需要做的是在 main 中创建列表和数组,并读取数组中设置的所有文本并添加到列表中。您可以打印System.out.println(Arrays.toString(lines.get(0)));
标签: java arrays file arraylist