在Android中附加到文本文件失败

时间:2016-03-02 14:56:54

标签: android android-5.0-lollipop fileoutputstream

我正在尝试创建一个简单的文本文件,我通过以下代码成功完成了这项工作:

                file=new File(mContext.getExternalFilesDir(null), generateFileName());
                fop=new FileOutputStream(file);
                timeString="Method executed in:"+formatTime(executionTime)+"secs";
                contentInBytes=timeString.getBytes();
                startString="start()".getBytes();
                stopString="stop()".getBytes();
                fop.write(startString);
                fop.write(System.getProperty("line.separator").getBytes());
                fop.write(contentInBytes);
                fop.write(System.getProperty("line.separator").getBytes());
                fop.write(stopString);
                fop.flush();
                fop.close();

                Log.d("write","Done writing.");

当我尝试再次向其添加相同的文本时,旧文本会被清除,从而导致文本文件为空。

这是我尝试附加文字的方式:

        fOutA=new FileOutputStream(file);  //I also tried: new FileOutputStream(myFile,true);
        fOutA = mContext.openFileOutput(textFileName, mContext.MODE_APPEND);
        timeString="Method executed in:"+formatTime(executionTime)+"secs";
        contentInBytes=timeString.getBytes();
        startString="start()".getBytes();
        stopString="stop()".getBytes();
        fOutA.write(startString);
        fOutA.write(System.getProperty("line.separator").getBytes());
        fOutA.write(contentInBytes);
        fOutA.write(System.getProperty("line.separator").getBytes());
        fOutA.write(stopString);
        fOutA.flush();
        fOutA.close();
        Log.d("append","Done appending.");

附加代码块中的textfileName参数与写代码块中的generatedFileName()相同。

有人可以告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

要写入文件并附加FileOutPutStreamOutPutStreamWriter的创建实例,然后使用append的{​​{1}}方法将数据附加到文件中。

OutputStreamWriter

第二个参数表示文本是否应附加到现有文件中。

答案 1 :(得分:0)

除了Rahil2952给出的建议外,我还需要摆脱这条线:

StrToFloat(JSON(JSON(JSON(TFile.ReadAllText('C:\desktop\json.txt'))['blh'])['dollar'])['buying_rate'])

我不需要 fOutA = mContext.openFileOutput(textFileName, mContext.MODE_APPEND); 并将其模式设置为oneFileOutput。当MODE_APPEND设置为FileOutputStream时,append本身会附加到现有文件。

此外,我不需要使用true