2011-11-05 58 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; 
    } 
}