我偶然发现了一个一直困扰我的问题。我正在编写一个在外部存储上创建 mp3 文件的应用程序。问题是,如果我手动转到手机上创建的目录并删除该文件,每当我尝试创建相同的文件时,它都会抛出此错误:
java.io.FileNotFoundException:/storage/emulated/0/Ringtones/sound1.mp3:打开失败:EEXIST(文件存在)
选择要创建的其他声音效果很好,但在我手动删除它们后,由于该问题,它们无法再次创建。
我已经尝试在指示路径之后、FileOutputStream 之前删除文件,但没有成功。
有什么建议吗? 干杯。
最佳答案
在尝试创建同一文件的另一个副本之前,您需要确认媒体数据库。所以你需要在复制之前调用它:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(您的文件所在的文件夹路径)));
编辑:以上答案已已弃用!请使用以下方法:
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";
因此,文件文件
应该是您要更新的媒体的路径,因为它刚刚被删除或新添加,以便在图库中可见。
关于java - 找不到文件异常: (file exists) - after manually deleting it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68974062/