2012-07-16 33 views
41

我想了解PrintWriter是一個我正在製作的小程序,而且我似乎無法讓java生成該文件,然後在其上寫下它。當我執行下面的程序時,它會在第9行給我一個Filenotfoundexeption錯誤。它也無法在我指定的目錄中生成該文件。我對此很陌生,所以請儘量保持答案的簡單。我正在使用Eclipse。如何在Java中使用PrintWriter和File類?

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

public class Testing { 

    public static void main(String[] args) { 

    File file = new File ("C:/Users/Me/Desktop/directory/file.txt"); 
    PrintWriter printWriter = new PrintWriter ("file.txt"); 
    printWriter.println ("hello"); 
    printWriter.close();  
    } 
} 
+0

您可以使用file.createNewFile();創建文件並將文件傳遞給PW .. – 2018-02-21 06:39:47

回答

63

如果該目錄不存在,您需要創建它。 Java不會自己創建它,因爲File類只是一個根本不存在的實體的鏈接。

如您所述,錯誤在於無法創建文件。如果你讀的PrintWriter構造函數的文檔,你可以看到

FileNotFoundException - If the given string does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file

你應該嘗試爲它包含文件夾創建一個路徑之前:

File file = new File("C:/Users/Me/Desktop/directory/file.txt"); 
file.getParentFile().mkdirs(); 

PrintWriter printWriter = new PrintWriter(file); 
+1

謝謝,這正是我需要的! – SPARK 2012-07-16 00:18:22

+14

+1對於'file.getParentFile()。mkdirs()':) – 2012-07-16 00:20:11

+0

假設我將給出'File file = new File(「dir1/dir2/directory/file.txt」);'然後它會在哪裏創建目錄?內部應用程序或外部? – 2013-12-11 11:46:08

1
import java.io.File; 
import java.io.PrintWriter; 

public class Testing 
{ 
    public static void main(String[] args) 
    { 

     File file = new File("C:/Users/Me/Desktop/directory/file.txt"); 

     PrintWriter printWriter = null; 

     try 
     { 
      printWriter = new PrintWriter(file); 
      printWriter.println("hello"); 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      if (printWriter != null) 
      { 
       printWriter.close(); 
      } 
     } 
    } 
} 
+1

如果引發'FileNotFoundException',將會拋出NPE。你應該使用'if(printWriter!= null)printWriter.close();' – 2012-07-16 00:18:23

7
import java.io.PrintWriter; 
import java.io.File; 

public class Testing { 

    public static void main(String[] args) throws IOException { 

    File file = new File ("C:/Users/Me/Desktop/directory/file.txt"); 
    PrintWriter printWriter = new PrintWriter ("file.txt"); 
    printWriter.println ("hello"); 
    printWriter.close();  
    } 
} 

拋出異常的文件。

0

Java不正常接受「/」來定義一個文件目錄使用,那麼試試這個:

File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt"); 

如果該文件不存在,那麼:

try { 
     file.createNewFile(); 
} 
catch (IOException e) { 
e.printStackTrace(); 
} 

需要什麼Java的幫助,只是來找我。

0

嗯,我想首先保持整個主成嘗試catch(或者你可以爲public static void main(String arg[]) throws IOException)使用,然後又用在你寫的

PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt"); 

所有這些directies喜歡的用戶文件的完整路徑,我,桌面,目錄應該是用戶所做的.java不會讓目錄擁有自己的。 應該爲

import java.io.*; 
public class PrintWriterClass { 

public static void main(String arg[]) throws IOException{ 
    PrintWriter pw = new PrintWriter("C:/Users/Me/Desktop/directory/file.txt"); 
    pw.println("hiiiiiii"); 
    pw.close(); 
} 

} 
0
import java.io.*; 

public class test{ 
    public static void main(Strings []args){ 

     PrintWriter pw = new PrintWriter(new file("C:/Users/Me/Desktop/directory/file.txt")); 

     pw.println("hello"); 
     pw.close 
    } 

}

0

PrintWriter class實際上可以爲您創建文件。

此示例適用於JDK 1.7+。

// This will create the file.txt in your working directory. 

PrintWriter printWriter = null; 

try { 

    printWriter = new PrintWriter("file.txt", "UTF-8"); 
    // The second parameter determines the encoding. It can be 
    // any valid encoding, but I used UTF-8 as an example. 

} catch (FileNotFoundException | UnsupportedEncodingException error) { 
    error.printStackTrace(); 
} 

printWriter.println("Write whatever you like in your file.txt"); 

// Make sure to close the printWriter object otherwise nothing 
// will be written to your file.txt and it will be blank. 
printWriter.close(); 

對於有效編碼列表,see the documentation.

或者,你可以通過文件路徑PrintWriter類沒有聲明編碼。

1

你應該清楚java中的異常。 在Java中檢查異常和未經檢查的異常。

編譯器在運行時順利執行程序的編譯時檢查已檢查的異常(未拋出,僅檢查)。

注:而在,如果他們是一個機會,一個檢查的異常會上升,那麼我們就應該處理,要麼通過嘗試捕捉檢查異常或通過我們的程序引發鍵word.Otherwise我們會得到一個編譯時錯誤:

CE:意外的異常java.io.FileNotFoundException;必須被捕獲或聲明爲拋出。

如何解決: 1.Put你的代碼在try catch塊:如通過上述其他人

2.使用拋出關鍵字。

的建議:瞭解更多關於例外(我個人很喜歡這個話題)

0

雙擊file.txt,然後將其保存,command + s,在我的情況下工作。另外,確保file.txt保存在項目文件夾中。 如果這不起作用。

PrintWriter pw = new PrintWriter(new File("file.txt")); 
pw.println("hello world"); // to test if it works. 
相關問題