我正在尝试将一些文件复制到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();
}
}
}
}
我一次传输多个文件,因此我在异步任务中使用此代码。
任何帮助都会非常感激。
答案 0 :(得分:1)
如果您有例外,则会删除删除而不考虑
考虑添加布尔标志以防止此
e.g。
在try block add 之前
boolean canDelete = true;
如果您有例外设置
canDelete = false;
然后在最后检查这个布尔
if (canDelete)
delete(remove);