2009-04-08 81 views
0

我在遇到以下代碼時遇到問題。我試圖寫入.ppm文件,並且我得到FileOutputStream文件未找到錯誤

Red.java:6:未報告的異常java.io.FileNotFoundException;必須被捕獲或聲明爲拋出 FileOutputStream fout = new FileOutputStream(fileName); ^ 任何想法?

import java.io. *;

公共類紅{

public static void main(String args[]) { 

String fileName = "RedDot.ppm"; 
FileOutputStream fout = new FileOutputStream(fileName); 
DataOutputStream out = new DataOutputStream(fout); 

System.out.print("P6 1 1 255 "); 
    System.out.write(255); 
    System.out.write(0); 
    System.out.write(0); 
    System.out.flush(); 
} 

}

+0

順便說一句,我的代碼正確顯示在上面。有關如何使代碼部分在適當的地方開始的提示將不勝感激。 – 2009-04-08 09:48:44

+0

我可以指出(無關)你打開一個新的流到你的文件名,但寫入標準輸出(通過System.out)。所以你的.ppm內容將轉到控制檯而不是文件。 – 2009-04-08 10:09:55

+0

謝謝,我認爲這是一個問題。我從一個有點瑕疵的例子開始。 – 2009-04-08 10:13:03

回答

3

最簡單的解決方法是這樣來重寫你的主聲明:

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

從而表明它可能拋出此異常,如果它不能創建的OutputStream(無論何種原因)。請注意,在這種情況下,FileNotFoundException並不是最好的異常名稱,但這是一個無法處理的命名問題。

其實你會大概想要在上面的main() throws子句中聲明IOException。你所調用的不同方法將被聲明爲拋出這個變體。

3

釷FileNotFoundException異常是經過檢查的異常。你需要附上try/catch塊中寫入文件的代碼,或拋出異常。

0

你是否在記事本中編寫代碼?嘗試使用Eclipse。它會強調出現未捕獲異常問題的代碼,然後您可以將光標放在帶下劃線的部分(出現錯誤的那一行),按Ctrl+1獲取解決方案列表,並從列表中選擇一個。我想假設在try{}catch{}周圍的區塊會封鎖異常,除非你願意做一些事情。

0

FileNotFoundException不在代碼中處理。添加FileOutputStream fout = new FileOutputStream(fileName);嘗試catch塊之間將解決問題。

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

    String fileName = "RedDot.ppm"; 
    try 
    { 
     FileOutputStream fout = new FileOutputStream(fileName); 
     DataOutputStream out = new DataOutputStream(fout); 
    }catch(FileNotFoundException fnfExcep){ 
     System.out.println("Exception Occurred " + fnfExcep.getMessage()); 
    } 
    System.out.print("P6 1 1 255 "); 
     System.out.write(255); 
     System.out.write(0); 
     System.out.write(0); 
     System.out.flush(); 
    } 
}