2016-04-04 5 views
2

リソースフォルダとその中のすべてのディレクトリとサブディレクトリを含むすべてのファイルを別のディレクトリにコピーできますか?私がこれまで管理してきた何リソースディレクトリとJarのすべてのファイルとサブフォルダを別のディレクトリにコピーする方法

は、CSSファイルで一つだけのファイルのリソースを、コピーすることです:

public void addCSS() { 
    Bundle bundle = FrameworkUtil.getBundle(this.getClass()); 
    Bundle[] bArray = bundle.getBundleContext().getBundles(); 
    Bundle cssBundle = null; 
    for (Bundle b : bArray) { 
     if (b.getSymbolicName().equals("mainscreen")) { 
      cssBundle = b; 
      break; 
     } 
    } 
    Enumeration<URL> resources = null; 
    try { 
     resources = cssBundle.getResources("/resources/css/mainscreen.css"); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    if (resources != null) { 
     URL myCSSURL = resources.nextElement(); 

     InputStream in; 
     try { 
      in = myCSSURL.openStream(); 
      File css = new File(this.baseDir() + "/ui/resources/css/mainscreen.css"); 
      try (FileOutputStream out = new FileOutputStream(css)) { 
       IOUtils.copy(in, out); 
      } 
     } catch (IOException e) { 
       // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
} 
+0

あなたはこれまでの問題が解決されたことを意味しますか?その場合は、解決策を投稿するか、回答の1つを受け入れてください。これにより、StackOverflowはあなただけでなく、誰にとっても便利なリソースになります。 –

答えて

3

あなたはBundle.findEntries(path,mask,recurse)を必要としています。この方法は、この目的のために設計されており、フラグメントで美しく機能します。

void getCSSResources(List<URL> out) 
    for (Bundle b : context.getBundles() { 
     Enumeration<URL> e = b.findEntries("myapp/resources", "*.css", true); 
     while (e.hasMoreElements() { 
      out.add(e.nextElement()); 
     } 
    } 
} 
+0

ありがとうございます。私はそれを試してみましょう。 –

+1

ありがとうございました。それは非常に明らかであるかもしれませんが、とても助けになりました。とても有難い。よく働く。 Bnd Toolsをお使いいただきありがとうございます。それはOSGiをはるかに容易に楽しくする。すばらしいです! –

関連する問題