android删除文件出错

当删除一个文件,再又一次下载这个同名文件,保存到sdcard时出现error,部分手机出现

Caused by: libcore.io.ErrnoException: open failed: EBUSY (Device
or resource busy)

at libcore.io.Posix.open(Native Method)

at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)

at java.io.File.createNewFile(File.java:941)

此问题在小米3。华为系列手机出现概率较大。

文件创建失败的原因是。文件被删除后仍然被其它进程占用。

进入adb shell。通过lsof命令查看占用该文件的进程。

据说这是android文件系统的bug,建议删除文件前先将该文件进行重命名:

删除文件安全方式:

private void deleteFile(File file) {

if (file.isFile()) {

deleteFileSafely(file);

return;

}

if (file.isDirectory()) {

File[] childFiles = file.listFiles();

if (childFiles == null || childFiles.length == 0) {

deleteFileSafely(file);

return;

}

for (int i = 0; i < childFiles.length; i++) {

deleteFile(childFiles[i]);

}

deleteFileSafely(file);

}

}

/**

* 安全删除文件.

* @param file

* @return

*/

public static boolean deleteFileSafely(File file) {

if (file != null) {

String tmpPath = file.getParent() + File.separator + System.currentTimeMillis();

File tmp = new File(tmpPath);

file.renameTo(tmp);

return tmp.delete();

}

return false;

}



时间: 2024-10-19 14:26:48

android删除文件出错的相关文章

Android删除文件夹的代码实现

//删除文件夹 private void deleteDirectory(File folder) { if (folder.exists()) { File[] files = folder.listFiles(); if (files == null) { return; } for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { deleteDirectory(files[i]); } else { fi

Thinkphp5 使用unlink删除文件出错Permission denied

今天做图片上传时遇到问题,上传失败则需要删除新上传的图片,结果删除的时候报错 unlink('此处为文件路径'): Permission denied 查了一下网上有人说是文件夹权限问题,最后解决,不是文件夹权限问题 这里删除失败是因为文件还没有被释放,并非权限不足 上传成功之后使用 unser($info) 释放文件,释放文件之后就能正常删除啦! $file = Request()->file('img'); if (!empty($file)) { $info = $file->move(

android 删除文件以及递归删除文件夹

1 private void deleteDirectory(File file) { 2 if (file.isFile()) { 3 file.delete(); 4 return; 5 } 6 7 if(file.isDirectory()){ 8 File[] childFiles = file.listFiles(); 9 if (childFiles == null || childFiles.length == 0) { 10 file.delete(); 11 return; 1

android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V

今天在看布局文件的时候出现 android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V 提醒,google后在网上说是因为sdk版本的问题. 解决方法: 修改选择不同的API就好了,降低版本即可

移动混合开发之android文件管理新建文件和删除文件

今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{ display: block; /*webFont设置其width和height时无效,只有设置font-size*/ /*width: 3rem;*/ /*height: 3rem;*/ font-size: 1.5rem; position: absolute; top:0; left: 0; bottom:

java/android开发中删除文件

在java或者android开发中经常遇到要删除一个文件夹及其子文件的需求,本文主要总结了自己开发中遇到并且使用过的两种删除文件和文件夹的方法. 1.如果仅仅是删除一个文件可以使用以下代码,传入文件路径即可 public static void deleteFile(String path) { File file = new File(path); file.delete(); } 2.如果需要删除一个非空文件夹,则需要遍历整个文件夹下子文件,进行递归删除 public static void

Android 删除SD卡文件和文件及创建文件夹和文件

package com.jiub.client.mobile.addphoto; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.graphics.Bitmap; import android.os.Environment; import android.util.Log; p

android删除sd卡文件

<!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 将文件删除

Android 关于文件及文件夹的创建 、删除、重命名、复制拷贝

package com.example.administrator.myapplication.util; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.F