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");
            }
        }

    }