如何从java中的文本文件中提取具有列约束的行数据方式数据

问题描述 投票:-2回答:1

我正在开发基于Java Swing的桌面应用程序而不使用数据库(基于文件的应用程序)。每当我试图提取指定的行方式数据时,约束都没有按预期工作。

我正在使用扫描仪逐行读取整个文本文件,但我正在努力为搜索功能提供约束。

您能否就如何使用列作为约束提取行方式数据给出一些建议。

e.g:

SL.No|Name|Salary  
1|ABC|1000  
2|DEF|2000  
3|GHI|1500

注意:这是我的文件结构,请您给我一些关于如何使用列作为约束提取行方式数据的建议..(如Name)

java arrays string-parsing
1个回答
0
投票

首先为数据创建包装类

public class Data
{

    private int serialNo;
    private String name;
    private double salary;


    public int getSerialNo()
    {
        return this.serialNo;
    }
    public void setSerialNo(int serialNo)
    {
        this.serialNo = serialNo;
    }
    public String getName()
    {
        return this.name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public double getSalary()
    {
        return this.salary;
    }
    public void setSalary(double salary)
    {
        this.salary = salary;
    }


}

创建单独的类以从文件中获取数据

public class Parser
{

    private File file;
    private BufferedReader bufferedReader;

    public Parser(File file)
    {
        this.file = file;
    }

    public ArrayList<Data> parse() throws IOException
    {

        ArrayList<Data> dataList = new ArrayList<>();

        bufferedReader = new BufferedReader(new FileReader(file));

        //skip first line as it contains colums
        bufferedReader.readLine();

        String line = "";

        while((line = bufferedReader.readLine()) !=null)
        {

            String[] tokens = line.split("\\|");

            Data data = new Data();
            data.setSerialNo(Integer.valueOf(tokens[0]));
            data.setName(tokens[1]);
            data.setSalary(Double.valueOf(tokens[2]));
            dataList.add(data);


        }


        return dataList;

    }


}

最后使用这样的

Parser parser = new Parser(new File("data.txt"));

ArrayList<Data> dataList = parser.parse();

for(Data data : dataList)
 System.out.println("Ser="+ data.getSerialNo() + " Name=" + data.getName() + " Salary=" + data.getSalary());

控制台输出

Ser=1 Name=ABC Salary=1000.0
Ser=2 Name=DEF Salary=2000.0
Ser=3 Name=GHI Salary=1500.0
© www.soinside.com 2019 - 2024. All rights reserved.