java - 文件被删除而没有被复制

标签 java android copy delete-file storage-access-framework

我正在尝试将一些文件复制到 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/

相关文章:

使用 fwrite 复制文本文件,结果是垃圾? C

java - 多部分/混合和应用程序/八位字节流

android - 如何配置 lint 以忽略特定情况?

php - HTML 表单默认值为空,除非用户单击按钮?

android - 如何为 Android 4.0 创建 AVD

android - Retrofit 没有序列化我的响应类中的第二个对象

batch-file - 需要一个脚本来做一些简单的事情

java - 在亚马逊集群上加速 java maven 编译

java - cucumber JVM 3 - io.cucumber.datatable.UndefinedDataTableTypeException

Java 8 - 返回 List (keyset) 反对 List<Map.Entry<Integer, CheckBox>>