簡體   English   中英

從文件中讀取數據並將其存儲在數組列表中

[英]Reading data from file and store it in Array list

例如,我在文件夾中有兩個CSV文件,需要逐行從一個文件中讀取數據,並將其存儲在數組列表A例如文件2動態地存儲到數組列表B 。也就是說,如果有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());
            }
        }
    }
}

您在這里有兩個錯誤。 一個在for循環中。

for (int i = 0; i <= listOfFiles.length; i++)
                   ^

雖然陣列上迭代,你通常做迭代從0length - 1不是0length

然后第二個是您不考慮路徑,僅考慮文件名。

Path pathToFile = Paths.get(listOfFiles[i].getName());
                                           ^

這將搜索具有相同名稱但在當前工作目錄中的文件,並且照常將找不到該文件。 更改它以使用絕對路徑。

Path pathToFile = Paths.get(listOfFiles[i].getAbsolutePath());

現在,您將從該文件所在的D:\\April\\目錄中獲取文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM