powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Список папок
15 сообщений из 15, страница 1 из 1
Список папок
    #40086545
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно получить список папок в resources
В SprintBoot jar

У меня такое чувство,что PathMatchingResourcePatternResolver в jar может работать только напрямую с файлами
...
Рейтинг: 0 / 0
Список папок
    #40086549
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пройдись по файлам и собери папки как-то так

Код: java
1.
.stream().map(x -> FilenameUtils.getPath(x)).distinct().collect(Collectors.toList());
...
Рейтинг: 0 / 0
Список папок
    #40086621
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Пройдись по файлам и собери папки как-то так

Код: java
1.
.stream().map(x -> FilenameUtils.getPath(x)).distinct().collect(Collectors.toList());



В том то и дело, что их нет вообще там =(

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
  private static final String UPLOAD_DIR = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + "upload/";
...
    ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
    Resource[] uploadRes = resourcePatternResolver.getResources(UPLOAD_DIR + "**");
    getSubFoldersStream(uploadRes)
        .forEach(str -> log.info("sss {}", str));
...
  private Stream<String> getSubFoldersStream(Resource[] resources) {
    log.info("getSubFoldersStream");

    return Arrays.stream(resources)
        .map(resource -> {
          log.info("resource {}", resource.getFilename());
          return resource;
        })
        .map(this::getURL)
        //.map(this::getURI)
        .filter(Objects::nonNull)
        .map(uri -> uri.getPath())
        //.map(Paths::get)
        //.map(Path::getFileName)
        //.map(Path::toString)
        .peek(subFolder -> log.info("subFolder {}", subFolder));
  }

  private URI getURI(Resource resource) {
    try {
      return resource.getURI();
    } catch (IOException ex) {
      log.error("Ошибка получения структуры ресурсов", ex);
      return null;
    }
  }

  private URL getURL(Resource resource) {
    try {
      return resource.getURL();
    } catch (IOException ex) {
      log.error("Ошибка получения структуры ресурсов", ex);
      return null;
    }
  }



Вот что выводится в идее
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
09:06:34.242 [main] INFO  com.test.TableConfigFactory - subFolder /Users/XXX/word/build/resources/main/upload/RDM_MIG_TRANSIT/2020.json
09:06:34.242 [main] INFO  com.test.TableConfigFactory - sss /Users/XXX/word/build/resources/main/upload/RDM_MIG_TRANSIT/2020.json
09:06:34.242 [main] INFO  com.test.TableConfigFactory - resource 2021.json
09:06:34.242 [main] INFO  com.test.TableConfigFactory - subFolder /Users/XXX/word/build/resources/main/upload/RDM_MIG_TRANSIT/2021.json
09:06:34.242 [main] INFO  com.test.TableConfigFactory - sss /Users/XXX/word/build/resources/main/upload/RDM_MIG_TRANSIT/2021.json
09:06:34.242 [main] INFO  com.test.TableConfigFactory - resource RDM_MIG_TRANSIT
09:06:34.242 [main] INFO  com.test.TableConfigFactory - subFolder /Users/XXX/word/build/resources/main/upload/RDM_MIG_TRANSIT/
09:06:34.242 [main] INFO  com.test.TableConfigFactory - sss /Users/XXX/word/build/resources/main/upload/RDM_MIG_TRANSIT/



Вот что при запуске jar
Код: java
1.
2.
3.
4.
5.
6.
09:02:04.141 [main] INFO  com.test.TableConfigFactory - resource 2017.json
09:02:04.141 [main] INFO  com.test.TableConfigFactory - subFolder null
09:02:04.141 [main] INFO  com.test.TableConfigFactory - sss null
09:02:04.141 [main] INFO  com.test.TableConfigFactory - resource 2021.json
09:02:04.141 [main] INFO  com.test.TableConfigFactory - subFolder null
09:02:04.141 [main] INFO  com.test.TableConfigFactory - sss null
...
Рейтинг: 0 / 0
Список папок
    #40086623
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня в папке upload лежат под папки (значения enum)
Внутри YEAR.json

Я хочу динамически сканировать ресурсы и создать стратегию для работы с ним
...
Рейтинг: 0 / 0
Список папок
    #40086627
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Че то у тебя много кода.
1 найди путь к папке ресурсов
2. Paths.get
Все.
...
Рейтинг: 0 / 0
Список папок
    #40086634
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
-=Koba=-,

Че то у тебя много кода.
1 найди путь к папке ресурсов
2. Paths.get
Все.


У меня JAR
И там не XXXFileSystemProvider, а JarFileSystemProvider
...
Рейтинг: 0 / 0
Список папок
    #40086636
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Прикольно. Внутри jar работаем?
А так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Path outerPath = Paths.get("c:/testfs/my-outer.jar");
try (FileSystem outerFS = FileSystems.newFileSystem(outerPath, null)) {
    Path innerPath = outerFS.getPath("/my-inner.jar");
    try (FileSystem innerFS = FileSystems.newFileSystem(innerPath, null)) {
       ...
    }
}
Или
URI uri = URI.create("jar:file:/home/orto/stackoverflow/outer.jar!/inner.jar");
Map<String,String> env = Collections.emptyMap();
try(ZipFileSystem zipfs = (ZipFileSystem)FileSystems.newFileSystem(uri,env))
{...}
...
Рейтинг: 0 / 0
Список папок
    #40086638
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Тут еще пара вариантов для динамики
https://qastack.ru/programming/11012819/how-can-i-get-a-resource-folder-from-inside-my-jar-file
...
Рейтинг: 0 / 0
Список папок
    #40086645
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-
PetroNotC Sharp
-=Koba=-,

Че то у тебя много кода.
1 найди путь к папке ресурсов
2. Paths.get
Все.


У меня JAR
И там не XXXFileSystemProvider, а JarFileSystemProvider

JAR - это обычный zip архив. И следовательно к нему применимы обычные API которые умеют извлекать имена
файлов. Что.... для программиста 21 столетия прочитать файлы из zip - нерешаемая задача?
...
Рейтинг: 0 / 0
Список папок
    #40086648
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Конечно. Только он скажет это метод пенсионера).
Кокой нит класслоадер надо. Как ОРМ)
...
Рейтинг: 0 / 0
Список папок
    #40086673
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
-=Koba=-
пропущено...


У меня JAR
И там не XXXFileSystemProvider, а JarFileSystemProvider

JAR - это обычный zip архив. И следовательно к нему применимы обычные API которые умеют извлекать имена
файлов. Что.... для программиста 21 столетия прочитать файлы из zip - нерешаемая задача?


Я так понимаю идея была расспаковать его?
...
Рейтинг: 0 / 0
Список папок
    #40086674
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Не надо распаковывать. Список файлов в zip умеют все либы
...
Рейтинг: 0 / 0
Список папок
    #40086696
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и Java SE API. Внезапно .
А ещё внезапнее существует пакет ресурсов .
...
Рейтинг: 0 / 0
Список папок
    #40086700
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Второе вроде только как найти строку при данной локализации (перевод)
...
Рейтинг: 0 / 0
Список папок
    #40086704
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
-=Koba=-,
Прикольно. Внутри jar работаем?
А так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Path outerPath = Paths.get("c:/testfs/my-outer.jar");
try (FileSystem outerFS = FileSystems.newFileSystem(outerPath, null)) {
    Path innerPath = outerFS.getPath("/my-inner.jar");
    try (FileSystem innerFS = FileSystems.newFileSystem(innerPath, null)) {
       ...
    }
}
Или
URI uri = URI.create("jar:file:/home/orto/stackoverflow/outer.jar!/inner.jar");
Map<String,String> env = Collections.emptyMap();
try(ZipFileSystem zipfs = (ZipFileSystem)FileSystems.newFileSystem(uri,env))
{...}


Спасибо за направление
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Список папок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]