我尝试使用下面显示的代码创建一个文本文件并将数据写入其中:
JAVA CODE_1:
File dir = Environment.getExternalStorageDirectory();
File file = new File(dir,"/DCIM/"+fileTitle);
try {
if( file.exists() ){
FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();
} else {
file.createNewFile();
FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是当我检查DCIM目录时,我发现文件已创建但没有数据写入它。请告诉我我的错误在哪里。
答案 0 :(得分:1)
抱歉,它不是在外部存储上创建的,而是在应用程序的内部存储上创建的,
(检查您的文件是否在/data/data/<Application_Package_Name>/files
目录中创建)
由于,
您正在使用openFileOutput
哪个人在应用程序的内部存储中创建文件。
public abstract FileOutputStream openFileOutput (String name, int mode)
自:API Level 1
打开与此Context的应用程序包关联的私有文件以进行编写。如果文件尚不存在,则创建该文件。
<强>代码:强>
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();
答案 1 :(得分:0)
仅限使用
FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();
它将在内部存储中创建文件。
或使用
File dir = Environment.getExternalStorageDirectory();
File file = new File(dir,"/DCIM/"+fileTitle);
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();