2011-11-05 61 views
0

我將如何去添加一個文本保存的行開始的條目號到.txt文件。例如。Android - 入門nember

  • 01,進入一個
  • 02,條目TWO
  • 03,條目中有三個

這裏是我的代碼寫入到文件

public void onClick(View v) {try { 
      BufferedWriter out = new BufferedWriter(new  FileWriter("/sdcard/input_data.txt", true)); 
      out.write(txtData.getText() + "," + dateFormat.format(new Date())); 
      out.close(); 

回答

0

在你的對象中有一個counter字段,w每一個條目寫入時間RITE它的值,然後增加它:

private int entryCounter = 1; 

public void onClick(View v) { 
    try { 
     BufferedWriter out = new BufferedWriter(new FileWriter("/sdcard/input_data.txt", true)); 
     out.write(counter + ", " + txtData.getText() + "," + dateFormat.format(new Date())); 
     entryCounter++; 
    ... 

你應該總是關閉作家finally塊,以確保它即使有些異常被拋出關閉。

+0

短暫而甜蜜!這很好,非常感謝 – Leigh8347

0

我想你需要將字符串包裝到一個閱讀器中,然後對每行進行讀寫操作。

BufferedReader reader = new BufferedReader(new StringReader(txtData.getText())); 
BufferedWriter writer = new BufferedWriter(new FileWriter("/sdcard/input_data.txt", true)); 

//... Loop as long as there is input. 
int lineNumber = 0; 
String line = null; 
while ((line=reader.readLine()) != null) { 
    writer.write(lineNumber++ + ", " + line); 
    writer.newLine(); // Write new line - "\n" on Android. 
} 

//... Close reader and writer. 
reader.close(); 
writer.close(); 

很顯然,你應該把上面的代碼在try/catch聲明並關閉讀者和作家在finally塊。

0

您的onClick方法更改爲這樣的事情:

public void onClick(View v) { 
    Utils.appendLog(this, txtData.getText() + "," + dateFormat.format(new Date()); 
} 

,並創建一個utils的類這些方法:

public class Utils { 
public static void appendLog(Context ctx, String text) { 
     File logFile = new File(ctx.getFilesDir(), Constants.YOUR_FILENAME); 
     if (!logFile.exists()) { 
      try { 
       logFile.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     try { 
      // BufferedWriter for performance, true to set append to file flag 
      BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
      buf.append(Utils.generateId(ctx) + "," + text); 
      buf.newLine(); 
      buf.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static int generateId(Context ctx) { 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); 
     int id = prefs.getInt("MyId", 1); 
     Editor e = prefs.edit(); 
     e.putInt("MyId", id +1); 
     e.commit(); 
     return id; 
    } 
}