Как извлечь данные строки данных с ограничением столбца из текстового файла в Java - PullRequest
0 голосов
/ 27 апреля 2018

Я занимаюсь разработкой настольного Java-приложения на основе Swing без использования базы данных (файловое приложение). всякий раз, когда я пытаюсь извлечь указанные данные для строк, ограничения не работают должным образом.

Я читаю весь текстовый файл построчно, используя сканер, но я изо всех сил стараюсь ограничить функциональность поиска.

Не могли бы вы дать мне несколько советов о том, как извлечь данные по строкам, используя столбец в качестве ограничения ..

Например:

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

примечание: это моя файловая структура. Не могли бы вы дать мне несколько советов о том, как извлекать построчные данные, используя столбец в качестве ограничения .. (например, Имя)

1 Ответ

0 голосов
/ 27 апреля 2018

Сначала создайте класс-оболочку для данных

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...