Почему не записывается пустой файл в java?
Есть код. Я хотел просто записать пустой файл.
public class FileTest {
public static void main(String[] args) {
String fileName = "FileTest0.txt";
String path = "D://";
File file = new File(path, fileName);
}
}
И не записался файл совсем. В скрытых файлах в директории я его тоже прошерстил - не оказалось его там.
Но стоило сделать минимально не пустой - что-нибудь записать файл через outputStream как всё заработало, новый файл в директории нашёлся:
public class FileTest {
public static void main(String[] args) {
String fileName = "FileTest0.txt";
String path = "D://";
File file = new File(path, fileName);
try(ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(file))){
os.writeObject(new String("Долой самодержавие и престолонаследие"));
}catch (Exception e){
e.printStackTrace();
}
}
}
Вопрос: почему команда new File автоматически не приводит к созданию нового файла? Почему чтобы создать новый файл в директории, нужно обязательно в него что-то записать?
Ответы (1 шт):
Класс File, определенный в пакете java.io, не работает напрямую с потоками. Его задачей является управление информацией о файлах и каталогах. Хотя на уровне операционной системы файлы и каталоги отличаются, но в Java они описываются одним классом File.
File file = new File(fileName);
bool created = file.createNewFile();
if (created) {
System.out.println("File %d created");
} else {
System.out.println("File %d not created");
}