提问者:小点点

如何解析一个简单的文本文件在java


我需要解析以下格式的文本文件并仅从文本文件中提取所需的值。文本文件的内容是

4564444   FALSE  /  TRUE    0   name k0LiuME5Q3
4342222   TRUE  /   TRUE    0   id  ab4454jj

我需要得到名称和id后的值。什么是最好的方法。我在java使用扫描仪类,但无法获得值。尝试使用下面的代码。

Scanner scanner = new Scanner(new File("test.txt"));

    while(scanner.hasNext()){
        String[] tokens = scanner.nextLine().split(" ");
        String last = tokens[tokens.length - 1];
        System.out.println(last);
    }

共3个答案

匿名用户

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Read_Text_File {

    public static void main(String[] args) {
        System.out.println(getValues());
    }

    public static ArrayList<String> getValues() {
        FileInputStream stream = null;
        try {
            stream = new FileInputStream("src/resources/java_txt_file.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        String strLine;
        ArrayList<String> lines = new ArrayList<String>();
        try {
            while ((strLine = reader.readLine()) != null) {
                String lastWord = strLine.substring(strLine.lastIndexOf(" ")+1);
                lines.add(lastWord);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return lines;
    }

}

输出:

[k0Liu ME5Q3, ab4454jj]

匿名用户

您需要按空格分割,而不是分号:

String[] tokens = scanner.nextLine().split(" ");

匿名用户

逐行读取数据,每行使用String. split("\s*")将没有空格的部分放入一个包含7个元素的数组中。这些元素中的最后一个就是你要找的。