文件已删除而未复制

时间:2017-07-21 07:52:48

标签: 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();
                        }
                    }
                }
    }

我一次传输多个文件,因此我在异步任务中使用此代码。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

如果您有例外,则会删除删除而不考虑

考虑添加布尔标志以防止此

e.g。

在try block add

之前

boolean canDelete = true;

如果您有例外设置

canDelete = false;

然后在最后检查这个布尔

if (canDelete) 
   delete(remove);