Удивительно, File
класс не представляет собой файл. Он фактически представляет собой путь к файлу ... который может или не может существовать.
Чтобы создать файл на Java, вам необходимо открыть его для вывода; например
File text1 = new File("C:/text1.txt");
FileOutputStream os = new FileOutputStream(text1); // The file is created
// here ... if it doesn't
// exist already.
// then write to the file and close it.
или вы могли это сделать - new FileOutputStream("C:/text1.txt")
. В обоих случаях существующий файл будет усечен ... если вы не используете FileOutputStream
с булевым параметром, который говорит open для добавления.
Если вы хотите создать файл без написания каких-либо данных в нем, вы можете также сделать это:
File text1 = new File("C:/text1.txt");
text1.createNewFile();
Однако, это только создаст новый файл, если файл не существует.
Чтобы создать каталог на Java, используйте методы File.mkdir()
или File.mkdirs()
.
UPDATE
Вы прокомментировали:
Я попытался File dir = new File("C:/dir1").mkdir();
это говорит несовместимые типы.
Это право. Метод mkdir()
возвращает boolean
, чтобы сказать, создал ли он каталог. Что вам нужно, чтобы написать что-то вроде этого:
File dir = new File("C:/dir1");
if (dir.mkdir()) {
System.out.println("I created it");
}
Всегда ПРОЧТИТЕ JavaDocs перед использованием метода или класса вы не знакомы с!
Пару более вещей, которые вы должны знать:
Лучший способ справиться с проблемой убедившись, что файл будет закрыт, чтобы сделать что-то вроде этого:
try (FileOutputStream os = new FileOutputStream(text1)) {
// now write to it
}
Поток os
будет автоматически закрыт при выходе из блока.
Обычно это «плохая практика», чтобы поймать Exception
. Это всегда «плохая практика», чтобы поймать Exception
и ничего не делать в обработчике. Этот вид скрывает доказательства ошибок и делает ваш код непредсказуемым и трудно отлаживаемым.
Спасибо. Я попробовал File dir = new File («C:/dir1»). Mkdir(); это говорит о несовместимых типах. Найдено boolean, но ожидается java.io.File. – user3177527
Является catch (IOException e) {System.out.print ("bug");} ОК? – user3177527
Лучше. Еще лучше: 'catch (IOException e) {System.out.print (" неожиданное исключение: "+ e);}' –