簡體   English   中英

如何將 txt 文件添加到 Arraylist (Java)

[英]How can I add the txt file into an Arraylist (JaVa)

我有一個名為 Vehicle.txt 的文件包含示例:

(123,123,123,123,123
456,4,456,456,456)

僅執行第一行的輸出將添加到數組列表中。 我只是想知道如何閱讀第二行。

    static void readVehicleFile() {
        Vehicle vehicle;
        try {

            input = new Scanner(new File("Vehicle.txt"));
            StringTokenizer tokenizer =  new StringTokenizer(input.next(),",");
            while (input.hasNextLine() && tokenizer.hasMoreTokens()) {
                vehicle = new Vehicle();
                vehicle.setPlateNumber(tokenizer.nextToken());
                vehicle.setNumOfYear(Integer.parseInt(tokenizer.nextToken()));
                vehicle.setMake(tokenizer.nextToken());
                vehicle.setModel(tokenizer.nextToken());
                vehicle.setEngineCapacity(Integer.parseInt(tokenizer.nextToken()));
                vehicle.setOwnerID(Integer.parseInt(tokenizer.nextToken()));


                vehicleList.add(vehicle);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

我建議使用 FileReader 和 BufferedReader,而不是使用 Scanner。 BufferedReader 有一個名為 readLine() 的方法,用於讀取下一行。

private static String[] getCSV(File path) {
        if (!path.exists())
            return null;
        try {
            ArrayList<String> array = new ArrayList<>();
            FileReader reader= new FileReader(path);
            BufferedReader br = new BufferedReader(reader);
            String line;
            while((line = br.readLine()) != null){
                String[] csv = line.split(",");
                array.addAll(Arrays.asList(csv));
            }
            br.close();
            reader.close();
            return Arrays.copyOf(array.toArray(), array.size(), String[].class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

這是我不久前制作的一個方法,它返回一個字符串數組,其中包含文件的逗號分隔值。 您可以添加一個微小的修改以從第一個和最后一個值中刪除括號。 然后,您可以使用該字符串數組中的值來設置您的車輛方法。

異常處理應該更加完善,如果讀取文件時出錯,讀取器將不會關閉,從而導致內存泄漏。 我希望這至少可以幫助您閱讀您的價值觀。

注意:如果您想了解該方法,請添加評論,我將進一步解釋。

您可以使用 java.nio.file.Files.readline

import java.nio.file.Files;
import java.nio.file.Paths;    
...
List<String> lines = Files.readAllLines(Paths.get("/tmp/readlines.txt"));

暫無
暫無

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

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