24просмотров
19 января 2026 г.
provocationScore: 26
🗂 Files API: перестаньте использовать java.io.File! С Java 7 (2011 год!) у нас есть современный java.nio.file.Path. Но до сих пор многие используют устаревший File. Почему Path лучше: 1. Работает с любыми файловыми системами (ZIP, FTP, память)
2. Более безопасные пути (защита от Path Traversal)
3. Удобные утилитные методы в Files 🚫 Плохо: File file = new File("data.txt");
if (file.exists()) { // ГОНКА! Файл может быть удалён между exists() и чтением BufferedReader br = new BufferedReader(new FileReader(file));
}
✔️ Хорошо: Path path = Paths.get("data.txt");
// Одной операцией
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); // Или с обработкой больших файлов
try (Stream<String> stream = Files.lines(path)) { stream.filter(line -> !line.startsWith("#")) .forEach(System.out::println);
} // Безопасное создание пути
Path safePath = basePath.resolve("subdir").normalize();
if (!safePath.startsWith(basePath)) { throw new SecurityException("Попытка обхода пути!");
}
✨ Особенно полезно: ✈️ Files.walk() — обход дерева каталогов
✈️ Files.createTempDirectory() — безопасные временные файлы
✈️ Files.getAttribute() — метаданные без создания объекта 💱 Миграция: File oldFile = new File("data.txt");
Path newPath = oldFile.toPath(); // Легко конвертировать
📌 Итог: java.nio.file — более безопасный, мощный и современный API. Время переходить с java.io.File! ✈️Подписаться: @iamjavadev #nio #files #безопасность #современнаяjava