Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查文件夹和所有数据是否已存在_Java_Android_File_Directory - Fatal编程技术网

Java 检查文件夹和所有数据是否已存在

Java 检查文件夹和所有数据是否已存在,java,android,file,directory,Java,Android,File,Directory,我的Android应用程序只在第一顿午餐时下载数据。数据约为50 mb,包含约2500个文件。 1.如果文件是在SharedSettings中下载的,那么存储是否是一个好主意?问题是,如果用户清除数据应用程序(可能是错误的),他必须重新下载所有内容。我手动将预打包的数据库复制到/data/data/。/databases/,检查数据库是否存在是一个好主意,如果不存在,则下载所有内容: if(new File(/data/data/../databases/myDB.db).exists){//d

我的Android应用程序只在第一顿午餐时下载数据。数据约为50 mb,包含约2500个文件。
1.如果文件是在SharedSettings中下载的,那么存储是否是一个好主意?问题是,如果用户清除数据应用程序(可能是错误的),他必须重新下载所有内容。我手动将预打包的数据库复制到/data/data/。/databases/,检查数据库是否存在是一个好主意,如果不存在,则下载所有内容:

if(new File(/data/data/../databases/myDB.db).exists){//dont download}
2.获取文件夹大小并检查是否相同是查看文件夹+数据是否良好的好方法吗?还是有更好的方法检查两个文件夹是否相同?

谢谢。

不,不要将50MB的数据放入共享设置中。它会倒下死去。一组共享设置以XML格式存储在磁盘上,并在打开时完全加载到RAM中。这也不会阻止用户清除此数据

为了确定数据是否已下载,我建议您在下载完成后制作一个文件,表明下载已完成。用户无法有选择地删除文件。他们可以清除您的数据,但这也将清除sentinel文件,您将知道需要重新下载。(记住,如果在中间中断,你需要重新启动下载。)


另外,请确保按照此处所述正确处理文件系统操作:

如果您担心丢失数据文件,这是另一种想法。。。如果您的应用程序在任何时候查找文件,但该文件不存在,则引发异常,将其传递给显示对话框并“验证”数据的处理程序。您可以保留所有所需数据文件的列表,然后只下载不存在的数据文件。类似于系统检查的东西,如果你愿意的话


这样,如果他们只是丢失了在根资源管理器中意外删除的几个文件,他们就不会下载50MB;-)

相当肯定的是,他说他正在存储——如果——这些文件是在sharedprefs中下载的,就像一个bool标志。不是实际数据。在我看来,这是一个不错的解决方案。如果用户清除了应用程序数据,你可能想重申,他们没有清除任何其他内容,在我看来。是的,哈哈,我的意思是存储一个布尔值(就像埃里克说的)。。谢谢你的回答