2012-03-08 22 views

Odpowiedz

202

To rzuci FileNotFoundException jeśli plik nie istnieje i nie może zostać utworzony (doc), ale stworzy go, jeśli to możliwe. Aby mieć pewność, że prawdopodobnie powinien pierwszy test, czy plik istnieje przed utworzeniem FileOutputStream (i tworzyć z createNewFile() jeśli nie):

File yourFile = new File("score.txt"); 
yourFile.createNewFile(); // if file already exists will do nothing 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 
+2

jeśli plik nie istnieje, w jaki sposób utworzyć pusty plik txt? –

+2

@StefanDunn z metodą 'createNewFile()', jak pokazano w moim przykładzie. – talnicolas

+48

Warunek jest zbędny. Według [JavaDoc] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#createNewFile%28%29), 'createNewFile()' samoistnie sprawdza istnienie pliku. – aztek

16
File f = new File("Test.txt"); 
if(!f.exists()) 
    f.createNewFile(); 

przekazać tę f do konstruktora FileOutputStream.

+0

to utworzyło plik, jeśli go nie znaleziono, dziękuję. –

+0

Najlepsza odpowiedź tutaj. +1. – m4heshd

1

Możesz potencjalnie uzyskać FileNotFoundException, jeśli plik nie istnieje.

dokumentacja Java mówi:

, czy plik nie jest dostępna lub mogą być tworzone zależy od platformy leżącej http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

Jeśli używasz Java 7 można użyć Pakiet java.nio:

Parametr options określa sposób utworzenia lub otwarcia pliku ... otwiera plik do zapisu, tworzenia pliku jeśli nie istnieje ...

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

21

Można utworzyć pusty plik, czy istnieje, czy nie ...

new FileOutputStream("score.txt", false).close(); 

jeśli chcesz pozostawić plik jeśli istnieje ...

new FileOutputStream("score.txt", true).close(); 

Będziesz tylko dostać FileNotFoundException jeśli starają się stworzyć fi le w katalogu, który nie istnieje.

+1

Zgłasza 'FileNotFoundException' w obu przypadkach. – mixel

20

Przed utworzeniem pliku konieczne jest utworzenie wszystkich katalogów nadrzędnych.

Zastosowanie yourFile.getParentFile().mkdirs()

11

FileUtils z Apache Commons jest bardzo dobrym sposobem na osiągnięcie tego w jednej linii.

FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt") 

To będzie tworzyć foldery macierzyste, jeśli nie istnieją i utworzyć plik, jeśli nie istnieje i rzucić wyjątek, jeśli obiekt plik jest katalogiem lub nie mogą być zapisywane. To równoważne:

File file = new File("/home/nikhil/somedir/file.txt"); 
file.getParentFile().mkdirs(); // Will create parent directories if not exists 
file.createNewFile(); 
FileOutputStream s = new FileOutputStream(file,false); 

Wszystkie powyższe operacje rzuci wyjątek, jeśli bieżący użytkownik nie jest dopuszczalne, aby wykonać operację.

2

Utwórz plik, jeśli nie istnieje.Jeśli wyjścia plików, wyczyść jego zawartość:

/** 
* Create file if not exist. 
* 
* @param path For example: "D:\foo.xml" 
*/ 
public static void createFile(String path) { 
    try { 
     File file = new File(path); 
     if (!file.exists()) { 
      file.createNewFile(); 
     } else { 
      FileOutputStream writer = new FileOutputStream(path); 
      writer.write(("").getBytes()); 
      writer.close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
0

tylko dawać alternatywny sposób, aby utworzyć plik tylko wtedy, gdy nie istnieje przy użyciu ścieżki i pliki.

Path path = Paths.get("Some/path/filename.txt"); 
Files.createDirectories(path.getParent()); 
if(!Files.exists(path)) 
    Files.createFile(path); 
Files.write(path, ("").getBytes()); 
Powiązane problemy