首页 > 解决方案 > 将格式化的 .txt 文件读入变量:Java

问题描述

我有一个名为 cars.txt 的格式化文本文件;它由制表符分隔。

Name    Length  Width
truck1  18.6    8.1
suv1    17.4    7.4
coupe1  14.8    5.4
mini1   14.1    5.0
sedan1  16.4    6.1
suv2    17.5    7.3
mini2   14.3    5.2
sedan2  16.5    6.2 

我需要阅读此信息,以便稍后用于计算。这是我目前的想法,但我很难拼凑我需要执行的内容。

public class Class{

    public void readFileIn(){
        Scanner sc = new Scanner(new FileReader("cars.txt");

            try{
               while (sc.hasNextLine()){ 
                    if (/**something that catches strings*/){
                        method1(string1, double1, double2);
                        method2(double1, double2);
                    }


                }
            }catch(FileNotFoundException exception){
                System.out.println("File dosen't exist");
            }

    }
}

标签: java

解决方案


Scanner 和 Buffer Reader 不再经常使用,因为 Java 提供了一种更好的方法来用更少的代码实现相同的结果。我可以看到至少三种可能的方法来解决您的问题:

方法 1:如果您至少可以使用 Java 8,那么我建议使用 java.nio.file将文件作为行流读取

Stream<String> linesStream=Files.lines("cars.txt");

然后根据您需要做什么,您可以使用forEach将在流的每一行上循环:

linesStream.forEach(e -> e.myMethod());

Java 收集器来执行您需要的计算。可以在这里找到关于收集器的一个很好的教程。您也可以使用收集器来分离您的字符串等...

方法 2:您可以使用 Apache Commons 库来实现相同的目标。特别是您可以使用FileUtilsStringUtils。例如:

File carFile=new File("cars.txt");

LineIterator lineIterator=lineIterator(carFile);

for(String line : lineIterator) {

         String[] my values=StringUtils.split(line);

//do whatever you need

} 

方法 3:使用 Jackson 将您的文件转换为 json 或 java 对象,然后您可以将其用于您自己的转换。是一个解释如何将 CSV 转换为 JSON 的示例。通过深入研究 Jackson 文档,您可以将其应用于您的案例。


推荐阅读