问题描述
这是我的代码:
String content = mEditText.getText().toString();
FileOutputStream fos;
try {
fos = openFileOutput(title,MODE_PRIVATE);
fos.write(content.getBytes());
Toast.makeText(Editactivity.this,"Saved to "+getFilesDir() + "/" + title,Toast.LENGTH_LONG).show();
fos.close();
saved = true;
} catch (IOException e) {
Toast.makeText(Editactivity.this,"Error happened",Toast.LENGTH_SHORT).show();
}
如果我这样运行代码,它将告诉已保存到/data/data/mypackagename/files/FileTitle
。我希望它将文件保存在另一个目录中,例如保存到/data/data/mypackagename/files/userData/FileTitle
。
我不知道有什么方法
解决方法
您需要的是File
构造函数,该构造函数带有父File
和文件的相对路径。您已正确确定openFileOutput()
在getFilesDir()
中创建了文件,因此代码看起来像这样:
FileOutputStream fos = null;
try {
final File dir = new File(getFilesDir(),"some/long/path");
dir.mkdirs();
final File file = new File(dir,"file.txt");
FileOutputStream fos = new FileOutputStream(file);
// Use fos...
} catch (IOException e) {
// Handle error...
} finally {
if (fos != null) {
try {
fos.close()
} catch (IOException ignore) {
// Close quietly.
}
}
}
File
只是一个指针,它可能指向目录,甚至可能指向尚不存在的内容,例如新文件。 FileOutputStream
将创建一个文件(如果不存在)。
如果您选择将新文件放置在另一个目录中,请通过在目录上调用mkdirs()
来确保该文件首先存在。