У меня есть пакет со списком файлов в jar-файле. Идея состоит в том, чтобы найти все файлы в пакете и прочитать содержимое каждого.
private static final String DATA_DIRECTORY = "this/is/my/package/containing/data/";
try {
URL url = this.getClass().getClassLoader().getResource(DATA_DIRECTORY);
if (url.toExternalForm().startsWith("jar:")) {
try (BufferedReader in = new BufferedReader(
new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(DATA_DIRECTORY)))) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
}
} else {
try (BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream()))) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
}
}
} catch (Exception e) {
System.out.println(e);
}
Результаты Windows
[Path] -> file:/D:/path/to/application/lib/my-jarfile.jar!/this/is/my/package/containing/data/
[Files] ->
b2b
b2c
bal
c2b
olp
olq
reg
rev
stat
Результаты Linux
[Path] -> jar:file:/path/to/application/lib/my-jarfile.jar!/this/is/my/package/containing/data/
[Files] -> []
[available bytes] -> 0
В Windows это работает отлично, но в Linux это терпит неудачу, это показывает, что Inputstream имеет 0 доступных байтов, и мне интересно, почемуЯ испробовал несколько решений, но ни одно из них не дало мне того результата, который я искал. Что или где я могу пойти не так?