将文件移动到新位置,然后删除Previous文件

时间:2011-11-21 07:40:46

标签: java android file

我想将文件从一个路径移动到另一个路径,但不是移动它而是将文件复制到新位置。 请提供任何提示

提前致谢

 MovePngToPreviewDir pngToPreviewDir = new MovePngToPreviewDir(null, "png");

                File[] listOfPNGFiles = RootDir.listFiles(pngToPreviewDir);

                for(File file:listOfPNGFiles){
                    Log.e("PNG = ",file.getAbsolutePath());
                    Log.e("PNG = ",file.getName());
                    if(previewDiagramDir == null){
                        Log.e("Preview Diagram Dir is NULL","Preview Diagram DIR is NULL");
                    }
                    if(file!= null && previewDiagramDir != null){
                        Log.e("Preview Diagram Dir",previewDiagramDir.getAbsolutePath()+"/");

                        if(file.renameTo(new File(previewDiagramDir, file.getName()))){
                            Log.e("PNG File is successfully Moved",file.getName());



                        }else{
                            Log.e("Error in Moving PNG File","Error in Moving PNG file");
                        }


                    }else{

                    }

3 个答案:

答案 0 :(得分:4)

如果您要将文件复制到其他位置,可以使用与您的istance对象file.renameTo()相关的Filefile方法,尝试此操作:

file.renameTo(new File("new_directory_to_copy_file"+file.getName())); 

复制文件后,您可以使用file.delete();删除它。

注意:方法delete()返回一个布尔对象,然后您可以使用以下命令检查正确的文件删除:

boolean del = file.delete();

if(del) System.out.println("File "+file.getName()+" deleted!");
else System.out.println("File "+file.getName()+"not deleted!");

关于File类API:http://download.oracle.com/javase/6/docs/api/java/io/File.html

答案 1 :(得分:1)

将文件复制到其他位置后使用file.delete(),以便将其完全移动到新位置。

答案 2 :(得分:0)

我已将文件移动到目标目录,并在从源文件夹中删除这些已移动的文件后,以三种方式,最后在我的项目中使用第3种方法。

第一种方法:

File folder = new File("SourceDirectory_Path");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
Files.move(Paths.get("SourceDirectory_Path"+listOfFiles[i].getName()), Paths.get("DestinationDerectory_Path"+listOfFiles[i].getName()));
}
System.out.println("SUCCESS");

第二种方法:

Path sourceDir = Paths.get("SourceDirectory_Path");
Path destinationDir = Paths.get("DestinationDerectory_Path");
  try(DirectoryStream<Path> directoryStream =   Files.newDirectoryStream(sourceDir)){
    for (Path path : directoryStream) {
        File d1 = sourceDir.resolve(path.getFileName()).toFile();
         File d2 = destinationDir.resolve(path.getFileName()).toFile(); 
         File oldFile = path.toFile();
        if(oldFile.renameTo(d2)){
            System.out.println("Moved");
        }else{
            System.out.println("Not Moved");
        }
    }
}catch (Exception e) {
    e.printStackTrace();
}

第3种方法:

Path sourceDirectory= Paths.get(SOURCE_FILE_PATH);
        Path destinationDirectory = Paths.get(SOURCE_FILE_MOVE_PATH);
        try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(sourceDirectory)) {
            for (Path path : directoryStream) {                                    
                Path dpath = destinationDirectory .resolve(path.getFileName());                                    
                Files.move(path, dpath, StandardCopyOption.REPLACE_EXISTING);
            }
        } catch (IOException ex) {
            ex.printStackTrace();   
        }