2013-11-22 145 views
0

這個項目我的工作,這裏是寫數據在給文件中的函數:文件閱讀格式

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

並沒有定義的另一個功能,讀取文件數據的,

public void filereader(){ 
    int i=0; 
    Object[] options = {"OK"}; 
    try 
    { 
    FileInputStream in = new FileInputStream("records.txt"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    String strLine; 
    StringBuffer sb = new StringBuffer(); 

    while((strLine = br.readLine())!= null) 
    { 
    sb.append(strLine +"\n"); 
    } 
    JOptionPane.showMessageDialog(null, sb.toString()); 
    }catch(Exception e){ 
    JOptionPane.showOptionDialog(null, "Error", "Customers", JOptionPane.PLAIN_MESSAGE,JOptionPane.QUESTION_MESSAGE, null, options, options[0]); 
    } 

    }; 

問題是,假設我想爲我的項目中的客戶創建一個帳戶,所以很少提出問題,例如姓名,性別等,並且所有這些信息都已保存,但是當我嘗試讀取文件的所有數據將不會以任何格式顯示,我希望它們像th一樣以正確的方式出現是:

customer name : Michelle , 
gender : Female ; 

但現在看來,因爲這:

michelle , 
female , 
+1

這就是數據如何存儲在文件中。您可以創建一個包含所有這些字段的類,並且在讀取文件中的每一行後,可以拆分它並填充該類的一個對象並將其添加到列表中。繼續重複,直到你讀完整個文件。然後你可以覆蓋你的類中的'toString()'方法,它將以你想要的格式打印數據! :) – SudoRahul

+0

您需要更改您的作者以支持所需的格式。你也可以考慮使用XML甚至是輕量級數據庫 – MadProgrammer

+0

我想用一段代碼來解釋,我不像你們那麼好,所以這些東西讓我有點困惑 – Mercurial

回答

1

您可以先建立所需的輸出,並呼籲bw.write(s);只有一次

或者按照R.J的建議。把所有東西都放到一個對象上,並覆蓋該類的方法toString。這將是解決您的問題的完美方式

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

    } 
+0

是不是OP已經在做什麼......輸出和輸入格式不匹配... – MadProgrammer

+0

不,他沒有在寫入之前格式化該行,他正在調用bw.write(s);在一個循環中。 –