java - 删除下载目录中的文件

标签 java android delete-file

几个月前有人帮助我创建了一个应用程序,我正在尝试自己改进它,但这并不像我想象的那么容易。

我想删除在下载目录中创建的文件。 我使用此文件夹作为缓存文件夹来共享我的应用程序中存储的声音。 这是共享选项的示例(运行良好,但我不明白应该将 outputFile.delete(); 行放在哪里...)

case R.id.partage:
            File outputFile = new File("");
            InputStream is = getResources().openRawResource(((Sound) adapter.getItem(index)).getMpsound());

            try {
                byte[] buffer = new byte[is.available()];
                is.read(buffer);
                File outputDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
                outputFile = new File(outputDir, getResources().getResourceEntryName(((Sound) adapter.getItem(index)).getMpsound()) + ".mp3");
                OutputStream os = new FileOutputStream(outputFile);
                os.write(buffer);
            } catch (IOException e) {
                e.printStackTrace();
            }
            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("audio/*");
            share.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", outputFile));
            share.putExtra(Intent.EXTRA_TEXT, "\"" + ((Sound) adapter.getItem(index)).getTitre_show() + "\" shared by my app");
            startActivity(Intent.createChooser(share, "Share Sound File"));
            return true;

有什么想法吗?

最佳答案

由于您正在将文件共享给其他应用,因此在其他应用读取您的文件之前,您无法删除您的文件。并且没有任何信息可以告诉您其他人已经阅读了您的文件。可以批量删除。例如,您可以将当前时间之前 1 小时及以上共享的所有文件一起删除。但为此,您必须创建文件以便能够跟踪它们。您可以将所有文件保存在下载目录的公共(public)文件夹中,以便轻松跟踪这些文件。如果您需要批量删除的逻辑和代码帮助,请告诉我。

关于java - 删除下载目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418560/

相关文章:

java - Hibernate - 注入(inject) MySql 函数

java - Jersey 2.x 带有属性的自定义注入(inject)注释

java - 检查字符串是否存在的高效数据结构

c# - .Net MVC 返回文件然后删除它

java - 类型 'org/springframework/http/MediaType'(当前帧,堆栈 [1])不可分配给 'org/springframework/util/MimeType'

android - 在后台将Android设备中的数据发送到服务器,对用户的影响最小

java - 如何使用 PhantomReference 报告 Android/Java 中的内存泄漏

java - 自定义适配器在 ArrayList 准备好之前启动

Java 'file.delete()' 未删除指定文件

c# - 使用 C# 从 Windows\System32 目录中删除文件