我正在尝试创建一个简单的文本文件,我通过以下代码成功完成了这项工作:
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()
相同。
有人可以告诉我为什么会这样吗?
答案 0 :(得分:2)
要写入文件并附加FileOutPutStream
和OutPutStreamWriter
的创建实例,然后使用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
。