我知道有关于此的问题,但由于某种原因,似乎没有任何对我有用。 我试图从我的应用程序中获取2个文本文件以保存到SD卡。它正确地创建了目录和文件,但始终是内部存储,而不是外部存储。我在Manifest中也有权限。
try {
File sdCard = Environment.getExternalStorageDirectory();
File myFile = new File(sdCard.getAbsolutePath() + "/rlgl");
myFile.mkdir();
// myFile.createNewFile();
String newLine = System.getProperty("line.separator");
File file = new File(myFile, "rlgls.txt");
if(file.exists()) {
} else if (!file.exists()){
FileOutputStream fOut = new FileOutputStream(file);
OutputStreamWriter myOutWriter =
new OutputStreamWriter(fOut);
for (int i = 0; i < 30; i++) {
myOutWriter.append("0.0" + newLine);
}
myOutWriter.close();
fOut.close();
}
} catch (IOException e) {
e.printStackTrace();
}
这是我正在使用的代码。我已经按照其他Stackoverflow响应的指示,但它从未进入SD卡。有什么我做错了吗?另外一个跟进问题是我有一种方法可以使用上面的代码,以使文件对用户不可见。他们没有理由打开它们。提前谢谢。
答案 0 :(得分:0)
它正确地创建了目录和文件,但始终是内部存储,而不是外部存储
不,它将它们放在外部存储设备上。 用户看作内部存储的内容是开发人员所看到的external storage。可以通过getFilesDir()
等方法访问Internal storage。这些都不是removable storage,例如某种形式的SD卡。
另外一个跟进问题是我有一种方法可以使用上面的代码,以使文件对用户不可见。他们没有理由打开它们。
然后将它们放在内部存储器上。
当存在“。”时,我的应用程序无法读取/写入文件。在他们的名字前面
我发现很难相信。 .
前缀使得它们在某些文件浏览器中默认不显示,但就是这样。用户可以访问它们(如果它们在外部存储上),并且应用程序可以访问它们(遵循与任何其他文件相同的规则,那些没有前导.
的文件。)