我正在开发基于Java Swing的桌面应用程序,而不使用数据库(基于文件的应用程序)。每当我试图提取指定的行方式数据时,约束都没有按预期工作。
我正在使用扫描仪逐行阅读整个文本文件,但我正在努力为搜索功能提供约束。
请您就如何使用列作为约束提取行方式数据给出一些建议。
例如:
SL.No|Name|Salary
1|ABC|1000
2|DEF|2000
3|GHI|1500
注意:这是我的文件结构,请您给我一些关于如何使用列作为约束提取行方式数据的建议..(如姓名)
答案 0 :(得分: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