1

サーバーからフォルダ/ディレクトリ全体をダウンロードしたい。フォルダにはファイルが含まれています。zip機能で試しましたが、そのためには、フォルダーパスではなく、ファイルまでのパスを指定する必要があります。

お気に入り -

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

Storefilesフォルダー内のすべてのフォルダーとフォルダー内のファイルをダウンロードする( "d:\ StoreFiles")のようなものが必要です。

どうすればこれを実装できますか?

4

3 に答える 3

2

これはどう?ディレクトリに再帰的に移動してダウンロードします。

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

PSあなたが望むようにdownloadFileを実装します。

于 2012-08-22T06:25:42.420 に答える
2

Apache Commons IOFileUtilsを調べてディレクトリをコピーすることをお勧めします。使い方はとても簡単です。javadocを見てください

便利な便利な方法のいくつか(利用可能な方法がいくつかあることに注意してください):

  • copyDirectory(File srcDir, File destDir)
  • copyDirectory(File srcDir, File destDir, FileFilter filter)。
于 2012-08-22T06:29:43.100 に答える
1

この例はuに役立つと思います

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);
        }
    }
}
于 2012-08-22T06:23:42.473 に答える