Как скопировать каталог ресурсов и все включенные файлы и подпапки в 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();
        }

    }
}

person Program-Me-Rev    schedule 04.04.2016    source источник
comment
Вы продолжаете публиковать дополнительные вопросы, означает ли это, что ваши предыдущие проблемы были решены? Если да, опубликуйте решение или примите один из ответов. Это делает StackOverflow полезным ресурсом для всех, а не только для вас.   -  person Neil Bartlett    schedule 05.04.2016


Ответы (1)


Вам нужно 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());
       }
     }
}
person Peter Kriens    schedule 04.04.2016
comment
Спасибо. Позвольте мне попробовать. - person Program-Me-Rev; 04.04.2016
comment
Большое спасибо. Это было очень полезно, хотя это могло показаться совершенно очевидным. Очень признателен. Работает отлично. Большое спасибо за вашу работу с Bnd Tools. Это делает OSGi намного проще и приятнее. Большой! - person Program-Me-Rev; 05.04.2016