我正在创建一个应用程序,我在其中创建了一些目录,我通过我的应用程序访问该目录,我想隐藏该目录以用于安全目的。因此,用户只能在应用程序内访问它们才能访问它们应用程序就像通过文件管理器。 任何帮助表示赞赏。 不要让它重复,因为我搜索了所有的答案,但没有人为我工作。
答案 0 :(得分:3)
只需在文件夹名称之前添加一个点就不会保护它。它只对用户不可见。它仍然可以从应用程序访问,包括文件管理器,因此也可以访问用户。它默认情况下被大多数文件管理器隐藏。
由于您希望隐藏文件以用于安全目的,您应该使用Android的内部存储空间。
来自官方Android开发者指南:
您可以将文件直接保存在设备的内部存储空间中。默认情况下,保存到内部存储的文件对应用程序是私有的,而其他应用程序无法访问它们(用户也无法访问)。当用户卸载您的应用程序时,将删除这些文件。
示例:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
您还可以加密文件并将加密密钥存储在Android密钥库中。
关于android中文件加密,Here是一个很好的答案 关于Android Keystore的Official guide。
答案 1 :(得分:2)
要清楚"您要创建其他应用程序无法访问的目录或文件夹"(您的应用程序文件夹)或创建文件夹的任何位置,但它是隐藏的
首先解决方案是 -
public static File saveFileInAppDirectory(Context context,byte[] inpute, String directoryName,String fileName){
File mypath;
File directory = new File(context.getExternalFilesDir(
Environment.DIRECTORY_PICTURES), directoryName);
if (!directory.mkdirs()) {
directory.mkdir();
}
mypath = new File(directory, fileName);
try {
InputStream is = new ByteArrayInputStream(inpute);
FileOutputStream f = new FileOutputStream(mypath);
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) > 0) {
f.write(buffer, 0, len1);
}
f.close();
} catch (Exception e) {
Log.e("SAVE_IMAGE", e.getMessage(), e);
e.printStackTrace();
}
return mypath;
}
它将创建您的应用程序文件夹路径的目录--Android / Data / Data / Your.Package.Name / FolderName / FileName
对于第二个解决方案 - 只需更改文件名
File mypath = new File(directory, "."+fileName)
;
如果你想要取得两个而不仅仅是替换
new File(directory, fileName); with new File(directory, "."+fileName);
答案 2 :(得分:1)
只需编写目录名后跟一个点(。) 例如:
.myDir or .myDir1
因此通过文件管理器无法看到这些目录。在访问这些目录时,只使用点(。)调用它们 例如:
"/path/to/folder/.myDir/"
可以对文件名
进行同样的操作答案 3 :(得分:1)
用于隐藏Android中的文件夹
您的文件夹名称为 MyApplicationFolder ,然后您需要在文件夹名称前面添加(。)点,例如。 MyApplicationFolder 强>
因此,当创建文件夹时,文件夹是图像,视频等内部的隐藏模式,但它将在 FileManager中可见。