new File("abc.txt")
не создает фактического файла, а new FileWriter("abc.txt")
создает файл на диске. Просматривая исходный код, я обнаружил, что new FileWriter("abc.txt")
в конечном итоге создает объект с файлом типа new File()
Почему новый FileWriter («abc.txt») создает новый файл, а новый файл («abc.txt») нет?
ответ
Конструктор класса java.io.File
не создает файл на диске. Это просто абстракция по пути к файлу. Файл создается при записи в файл.
При создании FileWriter
он вызывает конструктор FileOutputStream
, который вызывает последовательность проверок безопасности, а затем вызывает:
if (append) {
openAppend(name);
} else {
open(name);
}
Призывание open()
создает файл на диске.
EDIT:
Вот как open()
определяется:
/**
* Opens a file, with the specified name, for writing.
* @param name name of file to be opened
*/
private native void open(String name) throws FileNotFoundException;
объект Файл просто представление местоположения к файлу, (URL) в системе. Вы можете вызвать createNewFile() в объекте File, чтобы написать наш файл, предполагая, что имя с этим именем еще не существует в этом месте.
Не говоря уже о том, что объект 'File' также может быть каталогом , +1. – fge
Очень верно. Существуют методы для файла для создания каталогов. –
не всегда должен представлять фактический файл, это может быть то, что вы планируете создавать, угадываете существование или что-то, что вы удалили.
Из JavaDoc для java.io.File:
Абстрактное представление файлов и директорий для имен каталогов.
и
Экземпляры этого класса могут или не могут обозначать фактический объект файловой системы, например, файл или каталог.
Для того, чтобы иметь файл фактически будет создан, нужно позвонить createNEwFile()
, whic согласно JavaDoc:
атомарной создает новый пустой файл с именем этого абстрактного имени пути, если и только если файл с этим именем еще не существует.
Когда FileWriter
создает новый объект File
внутри, это не то, что заставляет файл появляться. Это происходит в других частях кода. Объект File
является стандартным способом указания файла (или каталога), независимо от того, существует он или нет.
Есть много причин, на самом деле, но:
Файл используется многими классами в java.io. FileReader и т. Д. FileWriter - это «удобный» класс, который использует File, и это позволяет программисту быть более продуктивным. Некоторые классы просто хотят, чтобы объект File указывал на местоположение файла, а затем они работали на нем по мере необходимости для поддержки их обработки. Другие классы могут поддерживать FileWriter, потому что он будет записывать только в файл и не читать.Это также делает API более строго типизированным.
Я думаю file.createNewFile() создает новый файл в фактическом .. смотрите следующий код для DETAL ...
File file = new File("D:\\tables\\test.sql");
// if file does not exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
- 1. Почему FileWriter не создает новый файл?
- 2. StreamWriter не создает новый файл
- 3. Почему программа создает новый файл конфигурации?
- 4. Почему мой код не создает новый файл?
- 5. Vim's: make создает новый файл
- 6. Fopen не создает новый файл
- 7. fstream не создает новый файл
- 8. пакетный файл, который создает новый пакетный файл
- 9. Вместо перезаписи создается новый файл
- 10. file_put_contents создать новый файл
- 11. Сохранение файла dbml создает новый файл designer.cs
- 12. Visual Studio создает новый файл ресурсов
- 13. Моя команда open() не создает новый файл
- 14. Serilog создает новый файл после 2 KB
- 15. Новый файл разблокировки AppDomain
- 16. Новый файл() - операция небезопасна
- 17. Создайте новый файл CSV?
- 18. Как заставить git обрабатывать новый файл как новый файл, а не как перемещенный файл?
- 19. Как добавить новый столбец в файл CSV
- 20. Почему System.Net.HttpListener создает новый процесс?
- 21. Новый выходной файл Fortran
- 22. Создайте новый файл на SD-карте каждый раз
- 23. Запись в новый текстовый файл
- 24. Почему VS2012 не создает для меня новый языковой файл?
- 25. Новый файл признан папку
- 26. Новый файл в папке
- 27. RMarkdown Blank Новый файл?
- 28. Java Новый текстовый файл
- 29. Сохранить новый файл
- 30. PHPExcel создать новый файл
Вы уверены, что 'нового FileWriter ("abc.txt")' создает новый файл? AFAIK создает поток вывода, зависящий от некоторого файла, но также может создавать нулевой объект, если нет определенного файла. Попробуйте проверить 'новый файл (« abc.txt »)' с 'File.canRead()', 'File.canWrite()' после попытки его создания – teoREtik