我正在尝试为我的Android手机编写一个简单的待办事项应用程序。我已经足够了,我想保存我输入的这些字符串。但是,每次我尝试写入数据时,都会得到一个未找到文件的异常。这是我在onCreate方法中用来实例化File的代码。
File path = getFilesDir();
File itemFile = new File(path,"Todo_File.txt");
然后我有两个方法,一个是写入文件,另一个是从中读取。它们看起来像这样:`
public void readItems() {
try {
BufferedReader reader = new BufferedReader(new FileReader("Todo_File.txt"));
while(reader.readLine()!=null){
items.add(reader.readLine());
}
} catch(IOException e) {
e.printStackTrace();
}
}
和
public void writeItems() {
try{
BufferedWriter writer = new BufferedWriter(new FileWriter("Todo_File.txt"));
for(int i=0;i<items.size();i++){
writer.write(items.get(i));
}
} catch (IOException e){
e.printStackTrace();
}
}
items是一个stringArray,它保存输入的字符串。每次我尝试编写或读取文件时,我都会遇到以下异常:
W / System.err:java.io.FileNotFoundException:Todo_File.txt(没有这样的文件或目录)
我不明白为什么Android Studio无法找到我创建的文件,有人可以帮忙吗?
答案 0 :(得分:1)
在Android中执行File-IO的标准方法是使用与上下文相关的IO方法。
要编写文件,请使用以下代码。有关不同文件模式的详细信息可用here。
FileOutputStream fOut = openFileOutput("Todo_File.txt", MODE_WORLD_READABLE);
要阅读文件,请使用:
FileInputStream fIn = openFileInput("Todo_File.txt");
答案 1 :(得分:1)
您正在寻找一个文件&#34; Todo_File.txt&#34;。
你在哪里保存这个档案? 您是否将其作为资源文件保存在&#34; res / raw&#34;您的应用目录或它位于手机存储中的某个位置?
在这里,您可以了解存储的类型
https://developer.android.com/guide/topics/data/data-storage.html
我猜你很可能需要纠正这个文件的路径。 这是获取&#34; / storage / sdcard0 /&#34;的方法。路径
Environment.getExternalStorageDirectory()
答案 2 :(得分:0)
自定义
File path = getFilesDir();
File itemFile = new File(path,"Todo_File.txt");
你可以这样做:
public void readItems() {
try {
BufferedReader reader = new BufferedReader(new FileReader(itemFile));
while(reader.readLine()!=null){
items.add(reader.readLine());
}
} catch(IOException e) {
e.printStackTrace();
}
}
public void writeItems() {
try{
BufferedWriter writer = new BufferedWriter(new FileWriter(itemFile));
for(int i=0;i<items.size();i++){
writer.write(items.get(i));
}
} catch (IOException e){
e.printStackTrace();
}
}
答案 3 :(得分:0)
您需要在写入文件之前实际创建该文件。你应该这样做:
File path = getFilesDir();
File itemFile = new File(path,"Todo_File.txt");
if (!path.exists()) {
path.mkdirs();
}
您所做的只是尝试从文件中读取。您收到错误的事实:
W/System.err: java.io.FileNotFoundException: Todo_File.txt (No such file or directory)
表示您尚未创建要写入的文件,并且我没有看到您在任何位置创建该文件。
如果您使用的是模拟器,则需要确保在设备上设置了SDK卡,然后执行以下操作:
File itemFile = new File(Environment.getExternalStorageDirectory(),"Todo_File.txt");
if (!path.exists()) {
path.mkdirs();
}