当我将文件写入SD卡时,它会将权限写为-rw-rw ----并将所有者写为root。我遵循了android指南的文件写入权限,但它没有说明以root身份编写文件。我需要能够使用android文件管理器打开此文件,但由于我没有root权限,所以没有权限。 这是输出文件的代码:
File file = getExternalStorageDirectory();
File sim = new File(file, "Driving Sim App/");
sim.getParentFile().mkdirs();
sim = new File(sim, name+".csv");
try {
BufferedWriter bor = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(sim)));
bor.write("This is a test");
bor.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
} catch (IOException e) {
e.printStackTrace();
}
我的清单文件中也有这个:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
您可能想尝试:
File file = Environment.getExternalStorageDirectory();
答案 1 :(得分:0)
您的问题有两个可能的修复方法。首先,确保您的路径格式正确。打印出sim卡的路径,确保它没有任何额外的斜线或缺少斜线。 所有这些都是有问题的:
parent_dir//child_dir.csv
parent_dirchild_dir.csv
parent_dir/child_dir/.csv
parent_dir/child_dir.csv/
你真的想要这个:
parent_dir/child_dir.csv
我知道的另一个可能的问题是某些Android设备上的重建索引问题。这意味着在某些Android设备上,即使您成功编写了文件,它们也可能在存储中不可见(假设您在尝试编写文件时没有收到错误)。
通过使用MediaScannerConnection对象重新索引来解决此问题。
MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
^^当我遇到类似这样的问题时,我从另一篇帖子中得到了类似问题: Can't write to sdcard even with permissions set and external storage in MEDIA_MOUNTED state