2014-01-09 8 views
2

Это не похоже на создание файла или папки. Зачем?Каков самый простой способ создать файл?

import java.io.*; 
public class file1 
{ 
    public static void main(String[] args) 
    { 

    File text1 = new File("C:/text1.txt"); 
    File dir1 = new File("C:/dir"); 
} 

Ниже приведено создание файла.

import java.io.*; 
public class file3 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 
    FileWriter text1 = new FileWriter("C:/text.txt"); 
    FileWriter dir = new FileWriter("C:/dir"); 
} 
catch(Exception e){} 

    } 
} 

Однако в каталоге, по-видимому, есть странный неиспользуемый значок.

Что можно сделать для создания каталога. Другие простые способы создания файлов и папок.

ответ

2

Удивительно, 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 и ничего не делать в обработчике. Этот вид скрывает доказательства ошибок и делает ваш код непредсказуемым и трудно отлаживаемым.

+0

Спасибо. Я попробовал File dir = new File («C:/dir1»). Mkdir(); это говорит о несовместимых типах. Найдено boolean, но ожидается java.io.File. – user3177527

+0

Является catch (IOException e) {System.out.print ("bug");} ОК? – user3177527

+0

Лучше. Еще лучше: 'catch (IOException e) {System.out.print (" неожиданное исключение: "+ e);}' –

0

Если вы создаете каталог с File, вы хотите:

new File("C:/dir").mkdirs(); 
+0

Я попытался Файл DIR = новый файл ("C:/dir1"). MKDIR(), но igives error.Found boolean, но ожидается java.io.File – user3177527

+0

Попробуйте просто строку, как я ее написал, без File dir = part. –

+0

Thaks много. Я сделал новый файл («C:/dir2»). Mkdirs(); И он создал каталог dir2. Почему File dir2 = новый файл («C:/dir2»). Mkdirs(); не работа? – user3177527

0

Для создания каталога вы можете использовать:

if(!text1.exists()){ 
    text1.mkdir(); 
} 

и для создания использования файла:

if(!text1.exists()){ 
    try { 
     text1.createNewFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

У вас есть потенциальные условия гонки там ... –

+0

Спасибо. text1.exists где? Как создать его на C: /? – user3177527

+0

Здесь 'text1' является переменной из вашего кода' File text1 = new File ("C: /text1.txt"); '. 'exists()' - это метод файла, который читается об этом в документах. – alex2410

Смежные вопросы