我在android设备内部存储根目录中有一个名为MyFolder的文件夹。没有安装外部SD卡。可以使用说ES文件管理器检查该文件夹 我想写一个文件到那个目录。 我尝试以下但似乎一切都不是我想要的。那怎么应该是sd? 请帮忙。
File sd = Environment.getExternalStorageDirectory();
// File sd = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) ;
// File sd = new File( Environment.getExternalStorageDirectory().getAbsolutePath());
// File sd = Environment.getRootDirectory() ; // system
// File sd = Environment.getDataDirectory() ;
backupDBPath = "MyFolder/_subfolder/mydata.txt";
File backupDB = new File(sd, backupDBPath);
答案 0 :(得分:3)
如果您的目录位于应用程序的内部数据目录中,则可以编写代码。
File directory = new File(this.getFilesDir()+File.separator+"MyFolder");
if(!directory.exists())
directory.mkdir();
File newFile = new File(directory, "myText.txt");
if(!newFile.exists()){
try {
newFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fOut = new FileOutputStream(newFile);
OutputStreamWriter outputWriter=new OutputStreamWriter(fOut);
outputWriter.write("Test Document");
outputWriter.close();
//display file saved message
Toast.makeText(getBaseContext(), "File saved successfully!",
Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
从官方文件中: https://developer.android.com/guide/topics/data/data-storage.html#filesExternal
设备具有可移动(SD卡)或不可移动存储(内部共享存储)。两者都称为外部存储。假设您可以在"内部共享存储"中创建目录,您可以编写下面的代码。
File directory = new File(Enviroment.getExternalStorage+File.separator+"MyFolder");//new File(this.getFilesDir()+File.separator+"MyFolder");
注意:如果必须使用getExternalStorage,则应授予存储权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:0)
您无法从应用程序在设备的内部存储上随意编写文件。它必须位于内部应用程序目录或应用程序缓存中。
将文件保存到内部存储时,您可以获取 通过调用以下两种方法之一将适当的目录作为文件:
getFilesDir()返回表示内部目录的File 你的应用。
getCacheDir()返回表示内部的File 应用程序临时缓存文件的目录。
你可以写:
String backupDBPath = "/_subfolder/";
String fileName = "mydata.txt";
File file = new File(context.getFilesDir() + backupDBPath, filename);
此处有更多信息:
https://developer.android.com/training/data-storage/files.html