2014-03-26 40 views
1

我需要将资源文件的目录从当前运行的JAR文件保存到用户磁盘上的临时目录中。将jar文件的目录保存到用户的磁盘

目前,我正在逐一保存文件。但现在我有一个本地库的大文件夹来保存,我宁愿不这样保存。

我试过我当前的代码,以防万一它将目录当作文件处理并保存。

public void saveResource(String name, File outFile) { 
    try (InputStream in = this.getClass().getResourceAsStream(
      name); 
      OutputStream out = new FileOutputStream(outFile);) { 

     int read = 0; 
     byte[] bytes = new byte[1024]; 

     while ((read = in.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 

但可悲的是,它没有奏效。那么将资源目录保存到磁盘的最佳方式是什么?

+0

*“我有本地库的一个大文件夹” *这是一个桌面应用程序?对于部署Java桌面应用程序,最好的选择通常是安装应用程序。使用[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)。 JWS使原生部署简单。 –

+0

是的,这是一个桌面应用程序。我特别要求向用户发送单个JAR文件(主要是因为目标机器没有Internet连接) – CJxD

回答

0

您需要遍历该文件夹中的所有文件并逐个保存文件。我想这就是你现在正在做的。您无法完全复制文件夹。

,或者你可以使用commons-io的文件实用程序

+0

有没有办法检查给出的名称是否是目录?如果是这样,是否有可能做一个递归的saveResources()来保存目录中的每个文件? – CJxD

+0

yes File.isDirectory()方法告诉你,这应该可以帮助你创建递归方法。 –

+0

这[link](http://www.mkyong.com/java/how-to-copy-directory-in-java/)应该可以帮到你。 –