如何在Android中将数据附加到文本文件中?

如何在Android中将数据附加到文本文件中?,android,file,Android,File,我想在文件中存储一些数据。文件的内容将不断增加,因此我需要将数据附加到该文件中 FileOperation.java package com.chinmay.callblocker; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.Ou

我想在文件中存储一些数据。文件的内容将不断增加,因此我需要将数据附加到该文件中

FileOperation.java

package com.chinmay.callblocker;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

/**
 * Created by user on 11/11/2014.
*/
public class FileOperation {

public Boolean write(String file_name, String content) {
    try {
        String file_path = "/sdcard/"+file_name+".txt";
        File file = new File(file_path);

        if(!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);

        /*FileOutputStream fos = new FileOutputStream(file);
        OutputStreamWriter osw = new OutputStreamWriter(fos);

        osw.append(content);
        osw.close();
        fos.close();*/

        bw.append(content);
        bw.append("\n");
        bw.close();

        return true;
    } catch(IOException e) {

        e.printStackTrace();
        return false;
    }
}
}
我在文件上使用append,但它仍然只覆盖。

私有静态void writeTobriad2(字符串文本){
private static void writeTobriad2(String text) {



        try {
            File file = null;
            file = new File("D:\\somefolder\\filename.txt");


            int kb = 1024;
    int mb = 1024 * 1024;

    //Getting the runtime reference from system
    Runtime runtime = Runtime.getRuntime();

    long minimum = 10;
    long memory = runtime.freeMemory() / kb;

    if (memory < minimum) {
              System.out.println(
                  "##### Heap utilization statistics [MB] #####");

              //Print used memory
              System.out.println("Used Memory:" +
                  ((runtime.totalMemory() - runtime.freeMemory()) / mb));

              //Print free memory
              System.out.println("Free Memory:" +
                  (runtime.freeMemory() / mb));

              //Print total available memory
              System.out.println("Total Memory:" +
                  (runtime.totalMemory() / mb));

              //Print Maximum available memory
              System.out.println("Max Memory:" +
                  (runtime.maxMemory() / mb));

              //System.out.println("Thread in sleep for 2 mins"+new Date());
              try {
                    Thread.currentThread().sleep(10000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

              //System.out.println("Thread awake after  2 mins"+new Date());
    }
            FileWriter fw = new FileWriter(file.getAbsoluteFile(),true);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(text);
            bw.newLine();
            bw.flush();
            bw.close();
            fw.close();
//System.out.println("Done");


//TODO Auto-generated method stub
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        // TODO Auto-generated method stub

    }
试一试{ File=null; file=新文件(“D:\\somefolder\\filename.txt”); int kb=1024; int mb=1024*1024; //从系统获取运行时引用 Runtime=Runtime.getRuntime(); 长最小值=10; 长内存=runtime.freemory()/kb; 如果(内存<最小值){ System.out.println( “############################; //打印已用内存 System.out.println(“已用内存:”+ ((runtime.totalMemory()-runtime.freemory())/mb)); //打印可用内存 System.out.println(“可用内存:”+ (runtime.freemory()/mb)); //打印总可用内存 System.out.println(“总内存:”+ (runtime.totalMemory()/mb)); //打印最大可用内存 System.out.println(“最大内存:”+ (runtime.maxMemory()/mb)); //System.out.println(“休眠线程2分钟”+新日期()); 试一试{ Thread.currentThread().sleep(10000); }捕捉(中断异常e){ //TODO自动生成的捕捉块 e、 printStackTrace(); } //System.out.println(“2分钟后线程唤醒”+新日期()); } FileWriter fw=新的FileWriter(file.getAbsoluteFile(),true); BufferedWriter bw=新的BufferedWriter(fw); 写(文本); 换行符(); bw.flush(); bw.close(); fw.close(); //系统输出打印项次(“完成”); //TODO自动生成的方法存根 }捕获(数字格式){ //TODO自动生成的捕捉块 e、 printStackTrace(); }捕获(IOE异常){ //TODO自动生成的捕捉块 e、 printStackTrace(); } //TODO自动生成的方法存根 }
你所说的“它保存一次”是什么意思@mangusta我的意思是它将第一次保存文本,然后不会附加任何内容。请尝试此FileWriter fw=new FileWriter(file.getAbsoluteFile(),true)@菲利克斯:嗯,我补充说这是真的,它正在发挥作用。非常感谢。