Java 如何在SD卡中创建一个只能用我的应用程序读取或写入的文件夹?

Java 如何在SD卡中创建一个只能用我的应用程序读取或写入的文件夹?,java,android,filesystems,Java,Android,Filesystems,我想在SD卡中创建一个只有我的应用程序才能读取或写入的文件夹。我不希望用户具有访问权限。这是我的密码: File file = new File(Environment.getExternalStorageDirectory(), "/myfolder"); file.mkdirs(); 它成功地创建了一个名为myfolder的目录,但每个人都可以访问它。如何保护已创建的文件夹或直接创建受保护的文件夹?您不能,但不能完全这样做。任何人都可以拿出这张卡,把它放进sd卡读卡器,然后在没有任何And

我想在SD卡中创建一个只有我的应用程序才能读取或写入的文件夹。我不希望用户具有访问权限。这是我的密码:

File file = new File(Environment.getExternalStorageDirectory(), "/myfolder");
file.mkdirs();

它成功地创建了一个名为myfolder的目录,但每个人都可以访问它。如何保护已创建的文件夹或直接创建受保护的文件夹?

您不能,但不能完全这样做。任何人都可以拿出这张卡,把它放进sd卡读卡器,然后在没有任何Android检查的情况下阅读它


现在,如果你所担心的是其他应用程序访问它,而不是手机的所有者,那么你需要KitKat或更高版本,SD卡上的文件默认是私有的,只要它们不放在公共目录中。在4.4之前,这是完全不可能的SD卡是公共领域。

我认为加密是你最好的朋友。你可以在只有你的应用程序才有密钥的地方使用。只要您的读/写不是很多,这应该是一个很好的解决方案。

在本例中,您可以将文件放在应用程序专用的内部存储空间中

写入文件:

try {
 OutputStreamWriter fout= new OutputStreamWriter(
 openFileOutput("test.txt", Context.MODE_PRIVATE));
 fout.write("This is a test.");
 fout.close();
} catch (Exception ex) {
  Log.e("Files", "Error writing file to internal memory");
}
try {
  BufferedReader fin = new BufferedReader(new InputStreamReader(openFileInput("test.txt")));
  String texto = fin.readLine();
  fin.close();
} catch (Exception ex) {
  Log.e("Files", "Error reading file from internal memory");
}
您可以在以下位置找到您的文件:

/data/data/java_包/files/test.txt

正在读取文件:

try {
 OutputStreamWriter fout= new OutputStreamWriter(
 openFileOutput("test.txt", Context.MODE_PRIVATE));
 fout.write("This is a test.");
 fout.close();
} catch (Exception ex) {
  Log.e("Files", "Error writing file to internal memory");
}
try {
  BufferedReader fin = new BufferedReader(new InputStreamReader(openFileInput("test.txt")));
  String texto = fin.readLine();
  fin.close();
} catch (Exception ex) {
  Log.e("Files", "Error reading file from internal memory");
}

如果您使用新文件,每个人都可以访问它。通过添加句点使其隐藏。在文件夹名称的开头,即:.myfolder,或使用shell创建目录command@RandykaYudhistira你的答案是错的。A.不会使它对任何枚举目录的人隐藏,也不会给它提供保护如果插入SD卡读卡器只隐藏在android中,如果你将它插入Windows,那么它将是可见的它甚至不隐藏在android中,ls-a会看到它。一个程序也会要求目录中的所有文件。哦,是的。ls-a将列出该文件夹。我把问题看错了。那么,shell命令呢?这样行吗?@Meassey你有进展吗?