如何将 Jar 中的资源目录和所有包含的文件和子文件夹复制到另一个目录
How to copy a resource directory and all included files and sub-folders in a Jar onto another directory
是否可以将资源文件夹及其中的所有文件,包括其中的所有目录和子目录复制到另一个目录中?
到目前为止,我只复制了一个文件资源,即 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();
}
}
}
你需要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());
}
}
}
是否可以将资源文件夹及其中的所有文件,包括其中的所有目录和子目录复制到另一个目录中?
到目前为止,我只复制了一个文件资源,即 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();
}
}
}
你需要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());
}
}
}