如何将txt文件添加到Arraylist(JaVa)中

如何将txt文件添加到Arraylist(JaVa)中,java,Java,我有一个名为Vehicle.txt的文件,其中包含示例: (123123 456,4456456) 仅在第一行执行的输出将添加到arraylist中。我只是想知道第二行怎么读 static void readVehicleFile() { Vehicle vehicle; try { input = new Scanner(new File("Vehicle.txt")); String

我有一个名为Vehicle.txt的文件,其中包含示例:

(123123
456,4456456)

仅在第一行执行的输出将添加到arraylist中。我只是想知道第二行怎么读

    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;
    }
private静态字符串[]getCSV(文件路径){
如果(!path.exists())
返回null;
试一试{
ArrayList数组=新的ArrayList();
FileReader=新的FileReader(路径);
BufferedReader br=新的BufferedReader(读卡器);
弦线;
而((line=br.readLine())!=null){
字符串[]csv=line.split(“,”);
addAll(Arrays.asList(csv));
}
br.close();
reader.close();
返回array.copyOf(array.toArray(),array.size(),String[].class);
}捕获(例外e){
e、 printStackTrace();
}
返回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"));
导入java.nio.file.Files;
导入java.nio.file.path;
...
列表行=Files.readAllLines(path.get(“/tmp/readlines.txt”);