2009-04-08 57 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(); 
    } 
}