2011-03-03 107 views
1

我试图覆盖从Android应用程序的文本文件,我做了什么却又是,覆盖文本文件编程

我一直在使用创建了一个文本文件中的一个活动:

FileOutputStream create_file = null; 
OutputStreamWriter osw = null; 
create_file = openFileOutput("filename.txt", Context.MODE_WORLD_WRITEABLE); 
osw = new OutputStreamWriter(create_file); 
osw.write("text goes here"); 
osw.close(); 
create_file.close(); 

和我已经打开,在另一个活动文件中读取使用线内容行:

FileInputStream open_file = openFileInput("filename.txt"); 
InputStreamReader isr = new InputStreamReader(open_file); 
BufferedReader inRd = new BufferedReader(isr); 
while ((getText = inRd.readLine()) != null) 
{ 
    Toast.makeText(getApplicationContext(), getText, Toast.LENGTH_SHORT).show(); 
} 

通过这样或我已经验证的内容是否存储不是,并确保了网络连接乐与内容存在,但是当我尝试从另一个活动覆盖该文件使用:

FileOutputStream create_file = null; 
OutputStreamWriter osw = null; 
create_file = new FileOutputStream(new File(PasswordUtil.pswrd_file), false); 
osw = new OutputStreamWriter(create_file); 
osw.write(getString); 

我得到一个例外,

java.io.FileNotFoundException:/ filename.txt (Read-only file system)

注:文文件存储在内部存储器中。

任何帮助,在此先感谢。

+0

您是否在阅读和书写时引用相同的文件? – Samuh 2011-03-03 09:48:23

+0

是相同的文件,但在不同的活动中,创建一个活动并覆盖另一个活动。 – Vignesh 2011-03-03 09:53:22

回答

3

我发现原因在于FileNotFoundException,其原因不是下面一行:

create_file = new FileOutputStream(new File("filename.txt", false)); 

,我们必须指定该文件的路径,对我来说,我已经将其存储在内部存储和我给路径

"/data/data/<Package-Name>/files/" + "filename.txt"

,我已经改变了覆盖编码这个样子,

FileOutputStream overWrite = new FileOutputStream("/data/data/<Package-Name/files/" + "filename.txt", false); 
overWrite.write(getString.getBytes()); 
overWrite.flush(); 
overWrite.close(); 

现在一切正常。