2013-06-21 2 views
0

Я попытался создать файл, используя приведенный ниже код:Программа не создает файл. Что не так?

import java.io.File; 

public class DeleteEvidence { 

public static void main(String[] args) { 
    File evidence = new File("cookedBooks.txt"); 

Однако файл cookedBooks.txt не существует нигде на моем компьютере. Я довольно новичок в этом, поэтому у меня возникают проблемы с пониманием других проблем, связанных с аналогичными проблемами.

+0

Вы вопрос уже ответил: http://stackoverflow.com/questions/6142901/how-to-create-a-file-in-a-directory- in-java –

ответ

5

Вы успешно создали экземпляр класса File, который сильно отличается от создания фактических файлов на вашем жестком диске.

Экземпляры класса File используются для обращения к файлам на диске. Вы можете использовать их во многих вещах, например:

  • проверить, существуют ли файлы или каталоги;
  • создавать/удалять/переименовывать файлы или каталоги; и
  • открытые «потоки» для записи данных в файлы.

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

public class AnExample { 
    public static void main(String... args) throws Throwable { 
    final File file = new File("file.dat"); 
    try (FileOutputStream fos = new FileOutputStream(file); 
     DataOutputStream out = new DataOutputStream(fos)) { 
     out.writeInt(42); 
    } 
    } 
} 

Здесь fos в экземпляре FileOutputStream, который является OutputStream, который записывает все байты, записанные в ней нижележащий файл на диске.

Затем я создаю экземпляр DataOutputStream вокруг этого FileOutputStream: Таким образом, мы можем написать более сложные типы данных, чем байты и массивы байтов (это ваша единственная возможность с помощью FileOutputStream напрямую).

Наконец, в файл записываются четыре байта данных: четыре байта, представляющие целое число 42. Обратите внимание: если вы откроете этот файл в текстовом редакторе, вы увидите мусор, так как в приведенном выше коде не были написаны символы «4» и «2».

Другая возможность была бы использовать OutputStreamWriter, который даст вам экземпляр Writer, который может быть использован для написания текст (недвоичные) файлов:

public class AnExample { 
    public static void main(String... args) throws Throwable { 
    final File file = new File("file.txt"); 
    try (FileOutputStream fos = new FileOutputStream(file); 
     OutputStreamWriter out = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) { 
     out.write("You can read this with a text editor."); 
    } 
    } 
} 

Здесь вы можете открыть файл file.txt в текстовом редакторе и прочитать сообщение, написанное на нем.

+1

Или 'File # createNewFile';) – MadProgrammer

+0

Хорошо, спасибо. Кажется, я понимаю, о чем вы говорите. Я просто беру себя через Java For Dummies прямо сейчас, поэтому я довольно плохо отношусь к этому. –

+0

:) Продолжайте, вещи станут все более и более ясными, чем больше вы будете читать и практиковать! Обязательно проверяйте JavaDocs все время. Я предлагаю вам открыть его прямо сейчас и прочитать описание классов 'FileOutputStream' и' File'. Возможно, вы также можете проверить 'DataOutputStream',' Writer' и 'OutputStreamWriter'! http://docs.oracle.com/javase/7/docs/api/ –

3
File evidence = new File(path); 
evidence.mkdirs(); 
evidence.createNewFile(); 
0

File - абстрактная концепция файла, который не должен существовать. Простое создание объекта File фактически не создает физический объект.

Вы можете сделать это, по крайней мере, двумя способами.

  1. Напишите что-нибудь в файл (ссылка на абстрактном File объекта)
  2. Вызов File#createNewFile

Вы также можете создавать временные файлы с помощью File#createTempFile, но я не думаю, что это то, что вы пытаетесь достигать.

0

Вы создали объект, который может представлять собой файл. Однако это только в памяти. Если вы хотите получить доступ к файлу, вы должны указать ea FileInputStream или FileOutputStream. Затем он также будет создан на диске (в случае выходного потока).

FileOutputStream fo = new FileOutputStream(new File(oFileName)); 
fo.write("test".getBytes()); 
fo.close(); 
+0

Или 'File # createNewFile';) – MadProgrammer

0

Это просто ур создания объекта файла с помощью этого объекта и нужно вызвать один метод CreateFile т.е. метод() ..

Так используйте evidence.createNewFile(); если вы создаете только файл. else if u хотите создать файл в любом конкретном месте, тогда укажите свое имя файла i.e File evidence = new File ("path"); В этом случае, если уры указания какого-либо directoty

0
String path="abc.txt"; 
File file = new File(path); 
if (file.createNewFile()) { 
    System.out.println("File is created"); 
} 
else { 
    System.out.println("File is already created"); 
} 
FileWriter fw = new FileWriter(file, true); 
string ab="Hello"; 
fw.write(ab); 
fw.write(summary); 
fw.close();