我想在sdcard上保存历史记录,!!只有一次创建一个File对象,History失败

时间:2011-12-30 22:37:42

标签: java android file object android-edittext

我希望在sdcard上保存历史记录,这是在edittext上输入的。但我的代码每次调用时都会生成新的File对象。 当我在会话代码中工作,但回想起“createExternalStorageFile()”,以前的历史记录消失了,同一个文件新的历史记录。我该怎么办?

public void createExternalStorageFile() {
    try {
            File  myFile = new File("/sdcard/" + tmp );

            if ( !myFile.exists()  ){
                myFile.createNewFile();
            } else{

            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.append(messageHistoryText.getText());
            myOutWriter.close();
            fOut.close();

            }

    } catch (IOException e) {
    Log.e(TAG, "Could not write file " + e.getMessage());
    }

}

1 个答案:

答案 0 :(得分:0)

查看下面的代码,它对我有用:

public void createExternalStorageFile() {
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        String fileName = "out.txt"; 
        File root = Environment.getExternalStorageDirectory();
        File file = new File(root, fileName);
        if (file.canWrite()) {
            try {
                boolean append = file.exists();
                FileWriter outFile = new FileWriter(file, append);
                PrintWriter logFileWriter = new PrintWriter(outFile);
                logFileWriter.append(messageHistoryText.getText());
                logFileWriter.flush();
                logFileWriter.close();
                outFile.close();
            } catch (IOException e) {
                Log.e("LOGGER", "" + e.getMessage());
                return;
            }
        } else {
            Log.e("LOGGER", "Couldn't write log file!");
        }
    } else {
        Log.e("LOGGER", "External storage is not mounted!");
    }
}