2015-04-18 1 views
1

У меня возникли проблемы с записью в txt-файл. Я получаю исключение FileNotFound, но я не знаю, почему, потому что файл определенно существует. Вот код.Java PrintWriter FileNotFound

import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.io.File; 

public class Save 
{ 
    public static void main(String[] args) 
    { 
     File file = new File("C:/Users/Daniel/Desktop/Programs/Save Data Test/save.txt"); 
     PrintWriter pw = new PrintWriter(file); 
     pw.println("Hello World"); 
     pw.close(); 
    } 
} 
+2

Вашей кода оленьей кожа компиляции - PrintWriter выбрасывает это 'FileNotFoundException', который нужно обрабатывать. – Reimeus

+0

. Посмотрите на это: http://stackoverflow.com/questions/11496700/how-to-use-printwriter-and-file-classes-in-java – QueryLars

+0

Код выше не будет даже ворс. Таким образом, вы не можете получить исключение. –

ответ

4

Вы должны создать фактический файл с его каталог, прежде чем создать PrintWriter поставил

file.mkdirs(); 
file.createNewFile(); 

Используя это с правильным попытаться поймать блоков будет выглядеть примерно так ...

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.File; 

public class Save 
{ 
    public static void main(String[] args) 
    { 
     File file = new File("save.txt"); 
     try { 
      file.mkdirs(); 
      file.createNewFile(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     try { 
      PrintWriter pw = new PrintWriter(file); 
      pw.println("Hello World"); 
      pw.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

    } 
} 
+0

Ответчик сказал, что «файл определенно существует», а это значит, что это не решит его. –

0

Просто потому, что вы знаете, что файл есть, не означает, что ваш код не должен проверять его существование, прежде чем пытаться его обработать.

Что касается вашего FileNotFound Exception, некоторые, если не все Java IDE, заставляют вас писать блоки try/catch, если среда IDE обнаруживает, что может возникнуть исключение.

NetBeans, например, код не будет даже скомпилировать:

enter image description here

Вы должны закодировать попробовать/поймать блок для обработки потенциального Exception

public static void main(String[] args) { 
    File file = new File("C:/Users/Daniel/Desktop/Programs/Save Data Test/save.txt"); 
    if (file.exists()) { 
     try { 
      PrintWriter pw = new PrintWriter(file); 
      pw.println("Hello World"); 
      pw.close(); 
     } catch (FileNotFoundException fnfe){ 
      System.out.println(fnfe); 
     } 
    } 
}