Почему не записывается пустой файл в 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 шт):

Автор решения: Aziz Umarov

Класс 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");
}
→ Ссылка