我从服务器下载图像并将其存储在设备的内部存储器中。这是代码:
//Here I create the folder
File folder = new File(Environment.getExternalStorageDirectory() + "/myfolder");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
startDownload();
函数startDownload()连接到php页面,并将图像从服务器下载到精简目录。在我的设备中输入文件管理器时,将显示该文件夹及其内容。无论如何,我可以将图像下载到隐藏目录,以便用户不会看到图像吗?
答案 0 :(得分:1)
这是Linux的基本知识。在文件管理器的前面添加“。”,例如文件等于.myFolder
,将默认隐藏文件管理器。但是,大多数文件管理器也可以选择显示隐藏文件,因此请考虑到这一点。
我建议,如果您确实从不希望用户看到这些文件,那么您使用私有内部存储。我们可以通过以下方式实现这一目标:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
//fos.write(string.getBytes()); writes string to file
fos.close();
我认为你程序的下载部分会使用OutputStream
种类。使用我们在上面的代码段中定义的FileOutputStream
,而不是您现在拥有的OutputStream
,并且您将写入私人内部存储空间!
这还具有在用户卸载时清除所述文件的额外好处,而写入外部SD将在卸载时将我们的应用程序片段留在SD卡上,除非明确删除。
另外,请访问官方文档here。
答案 1 :(得分:0)
Is there anyway that I can download the images to a hidden directory so the user won't see the images ?
是的。您可以将图像存储到应用的数据目录中。
String dir=Environment.getDataDirectory()+"/myfolder";
或者你可以通过前面的文件夹名称和dot.see简单地制作一个隐藏文件夹:
String dir=Environment.getExternalStorageDirectory() + "/.myfolder"
注意:如果用户从文件管理器设置“显示隐藏文件”,则可以看到以点(。)显示的文件夹名称前缀。
最好使用数据目录。
希望它会有所帮助。谢谢
答案 2 :(得分:0)
我认为外部缓存目录是为此目的而设计的,但请记住监控它并删除不再需要的东西:
http://developer.android.com/reference/android/content/Context.html#getExternalCacheDirs()
来自文档:
返回应用程序可以放置其拥有的缓存文件的所有外部存储设备上特定于应用程序的目录的绝对路径。这些文件是应用程序的内部文件,通常不会被用户视为媒体。