В Java 7 список файлов с " относительным путем"
Учитывая приведенную ниже структуру каталогов:
/dir1
/dir1/dir2
/dir1/dir2/file1
/dir1/dir2/file2
/dir1/dir2/dirA/file3
некоторая функция ("dir2")
желаемый результат:
dir2/file1
dir2/file2
dir2/dirA/file3
Я использую FileUtils.listFiles и пути, а затем строка манипуляции, но интересно, если лучший способ. Просто кажется запутанным.
Команда Unix find dir2 довольно точна.
У вопроса есть решение - Посмотреть?

Каков ожидаемый результат?
Источник

@ArvindKumarAvinash список строк, показанных выше, или путей или файлов.
Источник

Проверьте, если stackoverflow.com/questions/2056221/ ... отвечает на ваш вопрос.
Источник
Ответы - В Java 7 список файлов с " относительным путем" / In Java 7, list files with "relative path"
Является ответом!

29.01.2020 11:55:25
У вас есть базовый каталог и Collection<File>
. Вы можете использовать Path.relativize
, чтобы получить относительный путь от одного к другому.
Этот пример, заданный /dir1
и /dir1/foo/bar/baz
, приведет к foo/bar/baz
без каких-либо хрупких строковых операций:
import java.io.*;
import java.nio.file.*;
class Foo {
public static void main(String[] args) throws Exception {
Path base = Paths.get("/dir1");
File f = new File("/dir1/foo/bar/baz");
System.out.println(base.relativize(f.toPath()));
}
}

Решение используя метод релятивизации устраняет необходимость для обработки строк и регулярных выражений.

30.01.2020 12:48:21
Поскольку вы используете путь Java 7Path
.
Files
Тест
static void someFunction(String dir) throws IOException {
Files.walkFileTree(Paths.get(dir), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println(file);
return FileVisitResult.CONTINUE;
}
});
}
Вывод (на Windows 1)
someFunction("dir2");
1) в Linux пути будут иметь прямую косую черту вместо обратной косой черты.
Помочь в развитии проекта: