找不到文件异常:(文件存在)-手动删除后

问题描述 投票:0回答:3

我偶然发现了一个一直困扰我的问题。我正在编写一个在外部存储上创建 mp3 文件的应用程序。问题是,如果我手动转到手机上创建的目录并删除该文件,每当我尝试创建相同的文件时,它都会抛出此错误:

java.io.FileNotFoundException:/storage/emulated/0/Ringtones/sound1.mp3:打开失败:EEXIST(文件存在)

选择要创建的其他声音效果很好,但在我手动删除它们后,由于该问题,它们无法再次创建。

我已经尝试在指示路径之后和 FileOutputStream 之前删除文件,但没有成功。

有什么建议吗? 干杯。

java android filenotfoundexception
3个回答
4
投票

在尝试创建同一文件的另一个副本之前,您需要确认媒体数据库。所以你需要在复制之前调用这个:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(folder path in which your file was)));

编辑:以上答案已已弃用!请使用以下方法:

File file = new File(outputPath + fileName);
String filePath = file.toString();
String mimeType = "video/mp4";

MediaScannerConnection.scanFile(this, new String[]{filePath}, new String[]{mimeType}, null);

outputPath
fileName
示例:

String outputPath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "My App Name") + "/";
String fileName = "break dance" + ".mp4";

因此

File file
应该是您要更新的媒体的路径,因为它刚刚被删除或新添加,以便在图库中可见。


0
投票

按照用户 blackapps 的提示找到了答案。我还更改了目录,因为我使用的是已弃用的参考。现在它可以按 sdk 30 的预期工作。


0
投票

我也遇到了同样的问题,请问还有其他解决办法吗? 谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.