正在清理手机上的文件夹



这个网站上的第一个问题,如果不合适,请告诉我。

我正在adroid平台上创建一个应用程序。使用此应用程序,我在共享文档文件夹中创建了一些文件和文件夹。

结果是:对于每个构建,至少使用-cleaninstall参数集,不可能覆盖现有的文件和/或文件夹。即使在手机上删除了它们。这可能是因为文件系统认为新构建不是文件/文件夹的原始所有者,因此无权删除或覆盖。

作为旁路解决方案;appname";变量来创建一个文件夹来存储数据,如果需要;appname";变量来创建新的文件夹集;appname";但这是一种相当不合理的工作方式。

DocumentFolder := System.IOUtils.TPath.GetSharedDocumentsPath;
AppName        := 'ExpensesV2';
AppFolder      := DocumentFolder+PathDelim+AppName; 
if NOT DirectoryExists(AppFolder) then ForceDirectories(AppFolder);

有没有一种正确的方法来真正删除/清理特定的文件夹或获得正确的自动授权。

感谢您的宝贵回复!!

您没有指定如何创建文件夹和编写文件。根据您要写入的文件类型(媒体文件、文档、通用文件(以及您希望访问该文件的人(公共存储与应用程序专用存储(,有不同的机制。根据您的目标操作系统版本,权限和内容也会带来额外的复杂性。

考虑到可用的信息,我能建议的最好的方法是查看这些链接:

https://developer.android.com/training/data-storage

https://developer.android.com/training/data-storage/use-cases

后者给出了一些文件类型和用途的示例案例,并提出了写入/读取文件的机制

在最普遍的意义上,如果您想写入公共外部存储,请使用getExternalStoragePublicDirectory((;但这里的警告是,用户可以随心所欲地处理存储区域中的文件;将自己的文件放在那里,重命名文件,删除文件等。这超出了你的应用程序的控制范围。

如果你想让你的应用程序正确管理存储空间,那么你需要使用Context#getExternalFilesDir((之类的东西,但如果你想使这些文件在外部可见,你就必须与系统共享它们,并研究文件共享或内容提供商等问题。

最新更新