У меня на рабочем столе есть папка со структурой, подобной этой:
-/documents
-/00
-1.html
-2.html
-/01
-3.html
-4.html
-/02
-5.html
-6.html
Я хочу получить все файлы внутри /documents
, поэтому я сделал это:
ArrayList<String> paths = new ArrayList<String>();
fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fc.showOpenDialog(fc);
File[] file = fc.getSelectedFiles();
for (File f : file) {
try {
Files.walk(Paths.get(f.getAbsolutePath())).filter(Files::isRegularFile)
.forEach(p -> paths.add(p.getFileName().toString()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return paths;
Однако я получаю только имена файлов, например:
1.html
2.html
и т. Д.Я не могу найти способ получить каждый путь к файлу, как это:
/documents/00/1.html
/documents/00/2.html
/documents/01/3.html
/documents/01/4.html
И т.д.Использование p.getFileName().toAbsolutePath()
не сработало, я получил пути, как если бы они были внутри моего рабочего пространства:
C:\Users\n\workspace\test\1.html