我试图使用简单的文本文件作为存储一些持久数据的基础,我在网上看到的所有解决方案都没有为我工作。
将文本文件放在资源中并不允许运行时操作,但允许我从文件中读取。
允许android创建如下所示的文件:
OutputStream os = openFileOutput("Persistant.txt", MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("data");
bw.newLine();
但是,稍后尝试从此文件读取时,将返回以下内容: /Persistant.txt:打开失败:ENOENT(没有这样的文件或目录)
BufferedReader in
= new BufferedReader(new FileReader("Persistant.txt"));
因此,任何人都可以提供有关存储文本文件或问题本身的位置的帮助吗?
由于
答案 0 :(得分:1)
您使用Context的openFileOutput()方法在应用的私人存储空间中创建文件:
OutputStream os = openFileOutput("Persistant.txt", MODE_WORLD_READABLE);
所以你应该使用openFileInput()方法来读取它:
BufferedReader in = new BufferedReader(
new InputStreamReader(openFileInput("Persistant.txt")));
否则,如果您真的想使用File构造函数,首先必须获取文件夹名称:
BufferedReader in = new BufferedReader(
new FileReader(new File(getFilesDir(),"Persistant.txt")));
当您不这样做时,您尝试从程序的当前工作目录中打开该文件,该目录可能是设备的根目录 - 而不是您存储文件的位置,而不是您要存放的位置被允许写任何东西。
答案 1 :(得分:-2)
您是否已声明在manifest.xml中读取和写入外部存储的权限..?等,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />