例如,我在文件夹中有两个CSV文件,需要逐行读取一个文件中的数据,并将其像数据列表A
一样存储在数据列表B
中,如文件2中那样动态地存储。即如果有3个文件,它应该存储在数组列表C
public class DashboardReport
{
public static void main(String[] args)
{
int count = 0;
String line = "";
File folder = new File("D:/April");
File[] listOfFiles = folder.listFiles();
System.out.println("Count" + listOfFiles.length);
count = listOfFiles.length;
List books = new ArrayList();
for (int i = 0; i <= listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
System.out.println("File " + listOfFiles[i].getName());
Path pathToFile = Paths.get(listOfFiles[i].getName());
try (BufferedReader br = Files.newBufferedReader(
pathToFile, StandardCharsets.US_ASCII))
{
line = br.readLine();
String[] attributes = {};
while (line != null)
{
attributes = line.split(",");
books.add(attributes);
line = br.readLine();
}
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
else if (listOfFiles[i].isDirectory())
{
System.out.println("Directory " + listOfFiles[i].getName());
}
}
}
}
答案 0 :(得分:1)
这里有两个错误。一个是for循环。
for (int i = 0; i <= listOfFiles.length; i++)
^
在迭代数组时,通常会从0
到length - 1
而不是0
迭代到length
。
然后第二个是你没有考虑路径,只有文件名。
Path pathToFile = Paths.get(listOfFiles[i].getName());
^
这将搜索具有相同名称但在当前工作目录中的文件,并且通常不会找到它。将其更改为使用绝对路径。
Path pathToFile = Paths.get(listOfFiles[i].getAbsolutePath());
现在,您将从文件存在的D:\April\
目录中获取文件。