我正在尝试将一些文件复制到 SD 卡,然后删除它们。但很多时候文件并没有被复制而只是被删除。
很多时候,FileInputStream
为空,因为我正在检查必须传输的文件是否存在以及是否可写。
这是我用来移动文件的代码
public static void move(final File remove,final DocumentFile move_to_folder) {
final String mime = MimeTypes.getMimeType(remove);
final DocumentFile move = move_to_folder.createFile(mime, remove.getName());
try {
inStream = new FileInputStream(remove);
outStream =
con.getApplicationContext().getContentResolver().openOutputStream(move.getUri());
final byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(inStream!=null)
{
inStream.close();
}
if(outStream!=null)
{
outStream.close();
}
delete(remove);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
我一次传输许多文件,因此我在异步任务中使用此代码。
任何帮助将非常感激。
最佳答案
如果出现异常(exception)情况,删除内容将不经考虑而被删除
考虑添加一个 boolean 标志来防止这种情况
例如
在try block 之前添加
boolean canDelete = true;
如果您设置了异常(exception)
canDelete = false;
然后在最后检查这个 boolean 值
if (canDelete)
delete(remove);
关于java - 文件被删除而没有被复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232084/