Здравствуйте, у меня такой вопрос : когда работаешь с файлами, можно ли все фалы из одной папки, к примеру : у меня есть папка "Files", в которой хранятся три текстовых документах .txt, собственно сам вопрос - могу ли я все эти 3 файла считать и получить нужную информацию, к примеру мне в этих .txt 5 строчек, из каждого .txt мне нужно получить 2 4 5 строчку, и записать их значения отдельно, это возможно? Можно ли будет определить точное количество файлов в этой папке?
В библиотеке есть удобный класс Files, представляющий массу полезных методов для работы с файлами.
Получить ссылки на все файлы в директории:
Files.list(PATH).collect(Collectors.toList());
Найти все ссылки на файлы .txt в директории:
Files.find(PATH, 1, (p, a) -> a.isRegularFile() && p.getFileName().toString().endsWith(".txt")).collect(Collectors.toList());
Пример, как вывести 2,4 и 5 строчки всех файлов с раширением txt в заданной директории:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
public class TestClass {
public static final Path PATH = Paths.get("./testdir");
public static void main(String[] args) throws IOException {
System.out.println(Files.list(PATH).collect(Collectors.toList()));
System.out.println(Files.find(PATH, 1, (p, a) -> a.isRegularFile() && p.getFileName().toString().endsWith(".txt")).collect(Collectors.toList()));
Files.find(PATH, 1, (p, a) -> a.isRegularFile() && p.getFileName().toString().endsWith(".txt"))
.forEach(p -> {
try {
System.out.println("File " + p.getFileName());
List<String> lines = Files.readAllLines(p);
System.out.println("2nd line: " + lines.get(1));
System.out.println("4th line: " + lines.get(3));
System.out.println("5th line: " + lines.get(4));
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
Результат работы:
[./testdir/2.txt, ./testdir/3.txt, ./testdir/1.txt, ./testdir/0.dxd]
[./testdir/2.txt, ./testdir/3.txt, ./testdir/1.txt]
File 2.txt
2nd line: 77777
4th line: 99999
5th line: 00000
File 3.txt
2nd line: 22222
4th line: 44444
5th line: 55555
File 1.txt
2nd line: 2222
4th line: 4444
5th line: 5555
Получить список файлов в директории:
File dir = new File(path); //path указывает на директорию
File[] arrFiles = dir.listFiles();
List<File> lst = Arrays.asList(arrFiles);
отсюда
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости