在Android中保存文件时如何更改FileOutputStream目录?

问题描述

这是我的代码

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()来确保该文件首先存在。