我想将文件中的每一行保存到数组列表中。 当我只有一个文件它工作正常,但如果我读取多个文件,每个文件的第一行都保存在同一个数组... 代码:
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
在我的文件夹“files”中,我有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-methode中执行for循环我只是得到了内容一个文件回来......
答案 0 :(得分:0)
首先,您不需要存储行的数组列表,但可以简单地存储在String中。 所以
for(String string : lines ){
System.out.println(string);
}
足以满足将文件中的行存储到arraylist中的需要。
要打印列表中的行,您可以遍历列表并打印它们。
String[] stringArr
OP编辑问题后编辑
1.为什么再次使用public List<String> globalList;
public static void main(String[] args)
{
globalList=newArrayList<String>();
File folder = new File("\\Documents\\Files");
File[] listOfFiles = folder.listFiles();
for(File file : listOfFiles) {
dosomething(file);
}
for(String t : globalList) {
System.out.println(t);
}
}
public static void dosomething(File file)
{
try {
BufferedReader in = new BufferedReader(new FileReader(file));
String str;
while((str = in.readLine()) != null){
globalList.add(str);
}
}
reader.close();
}
而是将其用作列表并为其添加行。我看到你的全部意图是将所有三个文件的行存储在一个列表(或数组)中,用于一次打印所有文件
in ./app/index.tsx
Module build failed: TypeError: Cannot convert undefined or null to object
at hasOwnProperty (<anonymous>)
at Object.hasProperty (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\typescript\lib\typescript.js:2229:31)
at parseConfig (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\typescript\lib\typescript.js:71815:16)
at C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\typescript\lib\typescript.js:71721:22
at Object.parseJsonConfigFileContent (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\typescript\lib\typescript.js:71735:11)
at readConfigFile (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\awesome-typescript-loader\src\instance.ts:324:33)
at Object.ensureInstance (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\awesome-typescript-loader\src\instance.ts:101:9)
at compiler (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\awesome-typescript-loader\src\index.ts:47:22)
at Object.loader (C:\Users\sjb3\docs\NIST-CT\StriDE\node_modules\awesome-typescript-loader\src\index.ts:16:18)
@ multi webpack-hot-middleware/client react-hot-loader/patch ./app/index.tsx