Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Список папок / 15 сообщений из 15, страница 1 из 1
27.07.2021, 19:33
    #40086545
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список папок
Как можно получить список папок в resources
В SprintBoot jar

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

Код: java
1.
.stream().map(x -> FilenameUtils.getPath(x)).distinct().collect(Collectors.toList());
...
Рейтинг: 0 / 0
28.07.2021, 09:12
    #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
28.07.2021, 09:16
    #40086623
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список папок
У меня в папке upload лежат под папки (значения enum)
Внутри YEAR.json

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

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

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


У меня JAR
И там не XXXFileSystemProvider, а JarFileSystemProvider
...
Рейтинг: 0 / 0
28.07.2021, 10:21
    #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
28.07.2021, 10:33
    #40086638
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список папок
-=Koba=-,
Тут еще пара вариантов для динамики
https://qastack.ru/programming/11012819/how-can-i-get-a-resource-folder-from-inside-my-jar-file
...
Рейтинг: 0 / 0
28.07.2021, 10:43
    #40086645
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список папок
-=Koba=-
PetroNotC Sharp
-=Koba=-,

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


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

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


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

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


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

Второе вроде только как найти строку при данной локализации (перевод)
...
Рейтинг: 0 / 0
28.07.2021, 12:53
    #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
Форумы / Java [игнор отключен] [закрыт для гостей] / Список папок / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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