Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 删除包含文件引用的SQLite行时,有哪些选项可用于删除文件?_Java_Android_Sqlite - Fatal编程技术网

Java 删除包含文件引用的SQLite行时,有哪些选项可用于删除文件?

Java 删除包含文件引用的SQLite行时,有哪些选项可用于删除文件?,java,android,sqlite,Java,Android,Sqlite,我目前有一个ContentProvider来管理对数据库的访问,该数据库有几个通过外键链接的表。一个表维护应用程序特定音频文件的列表。还有一张布景表;音频表中的行必须在多对一设置表中具有关联行 ON CASCADE DELETE在表上处于活动状态,因此当删除集合表中的行时,音频表中引用集合的行也将被删除 当调用以音频表为目标的delete时,My ContentProvider也会删除引用的文件 因此,数据库端运行良好。但是,如果删除了音频表中的行,文件将保留。我想找到一种自动删除这些文件的方法

我目前有一个ContentProvider来管理对数据库的访问,该数据库有几个通过外键链接的表。一个表维护应用程序特定音频文件的列表。还有一张布景表;音频表中的行必须在多对一设置表中具有关联行

ON CASCADE DELETE在表上处于活动状态,因此当删除集合表中的行时,音频表中引用集合的行也将被删除

当调用以音频表为目标的delete时,My ContentProvider也会删除引用的文件

因此,数据库端运行良好。但是,如果删除了音频表中的行,文件将保留。我想找到一种自动删除这些文件的方法

一个可能的选择似乎是使用SQL触发器来运行undocumented _DELETE_FILE函数,该函数显然在Android SQLite中可用。显然,Android MediaProvider类使用这种方法自动删除文件

使用_DELETE_FILE函数是否可行

使用_DELETE_文件是否违反了良好做法或安全做法

是否有更好或更可取的方法来实现自动删除未引用的文件,可能是通过ContentProvider?需要定期扫描未引用文件的方法让我觉得不雅观,而需要手动执行级联的方法则很麻烦


类似的问题:

您已经准备好将扫描方法视为不优雅,但您计划使用未记录的功能?另一种方法是在提供者的delete方法中实现删除,但这样做效率低下。我想你最好偶尔找个维修服务来做一次清理工作。@Luksprog谢谢你的回复。计划使用的是一个过于强烈的短语;这是因为我对使用未记录的函数有疑虑,所以我发布了这个问题。我们将更多地考虑定期清理方法。