2012-08-22 71 views
1

我想从服务器下载整个文件夹/目录。 该文件夹包含文件。我试着用zip功能,但为此我需要给路径,直到文件,而不是文件夹路径。如何在java中下载整个文件夹?

像 -

BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\StoreFiles\\Temp\\profile.txt")); 

我想是这样( “d:\ StoreFiles”),将下载Storefiles文件夹中的所有文件夹和文件夹内的文件。

我该如何实现?

+2

我看看在Apache Commons IO'FileUtils.copyDirectory' – MadProgrammer

回答

0

我觉得这个例子ü

public class CopyDirectoryExample 
{ 
    public static void main(String[] args) 
    { 
     File srcFolder = new File("c:\\mkyong"); 
     File destFolder = new File("c:\\mkyong-new"); 

     //make sure source exists 
     if(!srcFolder.exists()){ 

      System.out.println("Directory does not exist."); 
      //just exit 
      System.exit(0); 

     }else{ 

      try{ 
      copyFolder(srcFolder,destFolder); 
      }catch(IOException e){ 
      e.printStackTrace(); 
      //error, just exit 
       System.exit(0); 
      } 
     } 

     System.out.println("Done"); 
    } 

    public static void copyFolder(File src, File dest) 
     throws IOException{ 

     if(src.isDirectory()){ 

      //if directory not exists, create it 
      if(!dest.exists()){ 
       dest.mkdir(); 
       System.out.println("Directory copied from " 
           + src + " to " + dest); 
      } 

      //list all the directory contents 
      String files[] = src.list(); 

      for (String file : files) { 
       //construct the src and dest file structure 
       File srcFile = new File(src, file); 
       File destFile = new File(dest, file); 
       //recursive copy 
       copyFolder(srcFile,destFile); 
      } 

     }else{ 
      //if file, then copy it 
      //Use bytes stream to support all file types 
      InputStream in = new FileInputStream(src); 
       OutputStream out = new FileOutputStream(dest); 

       byte[] buffer = new byte[1024]; 

       int length; 
       //copy the file content in bytes 
       while ((length = in.read(buffer)) > 0){ 
        out.write(buffer, 0, length); 
       } 

       in.close(); 
       out.close(); 
       System.out.println("File copied from " + src + " to " + dest); 
     } 
    } 
} 
+2

嗨,请复制其他人的代码时,始终提供归属地。这是必需的,而且这是优雅的事情。 http://www.mkyong.com/java/how-to-copy-directory-in-java/ –

1

这个怎么样有用吗?它递归地进入目录并下载:

public static void main(String[] args) { 
     directoryDownloader(new File("/Users/eugene/Desktop")); 
    } 

    private static void directoryDownloader(File input){ 
     if(input.isDirectory()){ 
      for(File file : input.listFiles()){ 
       directoryDownloader(file); 
      } 
     } else { 
      downloadFile(input); 
     } 
} 

private static void downloadFile(File someFile){ 
    System.out.println("Downloading file : " + someFile.getPath()); 
} 

P.S.实现你想要的downloadFile。

+0

谢谢MadProgrammer,Sujay,aravindKrishna,Eugene的建议和例子,真的帮了很多! – sumitg

+0

@sumitg upvote是这里最好的谢谢你;) – Eugene

2

我会建议看看Apache Commons IO FileUtils复制目录。这很容易使用。 Have a look at the javadoc

一些有用的方法,可能会派上用场(注意,有几个可用的那些):

  • copyDirectory(File srcDir, File destDir)
  • copyDirectory(File srcDir, File destDir, FileFilter filter
相关问题