Java 文件读取器格式
我正在进行的这个项目,下面是将数据写入文件的函数:Java 文件读取器格式,java,Java,我正在进行的这个项目,下面是将数据写入文件的函数: public void writetofile(){ String bucky[]={custname,custlname,agee,address,id}; for(int i = 0; i < bucky.length; i++) { try (BufferedWriter bw = new BufferedWriter(new FileWriter("records.txt", true
public void writetofile(){
String bucky[]={custname,custlname,agee,address,id};
for(int i = 0; i < bucky.length; i++) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("records.txt", true))) {
String s;
s = bucky[i];
bw.write(s);
bw.newLine();
bw.flush();
}
catch(IOException ex) {
JOptionPane.showMessageDialog(null, "Error In File");
}
}
};
问题是,假设我想在我的项目中为一个客户创建一个帐户,所以很少询问诸如姓名、姓氏、性别等问题,所有这些信息都已保存,但当我尝试读取文件时,所有数据都将以非格式显示,我希望它们以正确的方式显示,如下所示:
customer name : Michelle ,
gender : Female ;
但现在看来是这样的:
michelle ,
female ,
您可以首先构造所需的输出并调用
bw.write代码>仅一次
或者遵循R.J的建议。将所有内容放在一个对象上,并重写该类的toString
methid。这将是解决你问题的完美方法
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class Customer
{
private final String firstName;
private final String lastName;
private final String address;
private final int age;
private final int id;
public Customer(String firstName, String lastName, String address, int age,
int id)
{
super();
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.age = age;
this.id = id;
}
@Override
public String toString ()
{
return "Customer [firstName=" + firstName + ", lastName=" + lastName
+ ", address=" + address + ", age=" + age + "]";
}
public static void main (String[] args)
{
}
public void writetofile (String custname, String custlname, int agee,
String address, int age)
{
Customer customer = new Customer(custname, custlname, address, age, id);
try (BufferedWriter bw = new BufferedWriter(new FileWriter(
"records.txt", true)))
{
String s = customer.toString();
bw.write(s);
bw.newLine();
bw.flush();
}
catch (IOException ex)
{
JOptionPane.showMessageDialog(null, "Error In File");
}
}
}
这就是数据存储在文件中的方式。您可以创建一个包含所有这些字段的类,从文件中读取每一行后,您可以拆分它并填充该类的对象,然后将其添加到列表中。继续重复这个直到你看完整个文件。然后您可以重写类中的toString()
方法,该方法将以您想要的格式打印数据:)您需要更改写入程序以支持所需的格式。你也可以考虑使用XML,甚至是一个轻量级的数据库,我想用一段代码来解释,我不如你们好,所以这些东西让我有点困惑。你只想格式化输出(你在屏幕上显示)。或者文件格式本身…?这不是OP已经在做的吗…输出和输入格式不匹配…不,他在写之前没有格式化行,他正在调用bw.write(s);在一个循环中。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class Customer
{
private final String firstName;
private final String lastName;
private final String address;
private final int age;
private final int id;
public Customer(String firstName, String lastName, String address, int age,
int id)
{
super();
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.age = age;
this.id = id;
}
@Override
public String toString ()
{
return "Customer [firstName=" + firstName + ", lastName=" + lastName
+ ", address=" + address + ", age=" + age + "]";
}
public static void main (String[] args)
{
}
public void writetofile (String custname, String custlname, int agee,
String address, int age)
{
Customer customer = new Customer(custname, custlname, address, age, id);
try (BufferedWriter bw = new BufferedWriter(new FileWriter(
"records.txt", true)))
{
String s = customer.toString();
bw.write(s);
bw.newLine();
bw.flush();
}
catch (IOException ex)
{
JOptionPane.showMessageDialog(null, "Error In File");
}
}
}