这个网站上的第一个问题,如果不合适,请告诉我。
我正在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((之类的东西,但如果你想使这些文件在外部可见,你就必须与系统共享它们,并研究文件共享或内容提供商等问题。