我正在创建一个android应用程序,它将数据读取和写入位置/sdcard/ReadandWrite/
中的文件。当我写入该文件时,它不会写入append mode.it将删除旧数据并写入新的one.please帮助我解决这个问题。这是我的代码。
private File openfile() {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/ReadandWrite");
dir.mkdirs();
File file = new File(dir, "myfile.txt");
file.setWritable(true);
if(file.exists())
{
file.canRead();
file.setWritable(true);
}
else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
private void writetofile() {
try {
File file=openfile();
OutputStreamWriter myOutWriter =
new OutputStreamWriter(new FileOutputStream(file));
myOutWriter.append(text.getText());
myOutWriter.close();
myOutWriter.close();
Toast.makeText(getBaseContext(),
"Done writing SD 'mysdfile.txt'",
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:3)
您需要将FileOutputStream配置为使用append
模式。来自JDK documentation:
public FileOutputStream(String name, 布尔附加) 抛出FileNotFoundException
创建文件输出流以使用指定的文件写入文件 名称。如果第二个参数为true,则将写入字节 文件的结尾而不是开头。一个新的FileDescriptor 创建对象以表示此文件连接。
首先,如果有安全管理器,则调用其checkWrite方法 以名字为参数。
如果文件存在但是是目录而不是常规文件,那么 不存在但无法创建,或无法打开任何其他 之所以抛出FileNotFoundException。
参数: name - 与系统相关的文件名 append - 如果为true,则将字节写入文件末尾而不是开头抛出: FileNotFoundException - 如果文件存在但是是目录而不是常规文件,则不存在但无法创建,或者 由于任何其他原因无法打开。 SecurityException - 如果存在安全管理器且其checkWrite方法拒绝对该文件的写访问。以来: JDK1.1参见: SecurityManager.checkWrite(java.lang.String中)
所以改变
OutputStreamWriter myOutWriter = new OutputStreamWriter(new FileOutputStream(file));
到
OutputStreamWriter myOutWriter = new OutputStreamWriter(new FileOutputStream(file, true));