2016-05-16 11 views
0
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 

public class Example { 

    public static void main(String[] args) { 
     BufferedReader input = null; 
     BufferedWriter output = null; 
     try{ 
      int c; 
      input = new BufferedReader(new FileReader("readfile.txt")); 
      output = new BufferedWriter(new FileWriter("writefile.txt")); 
      while ((c=input.read())!= -1) { 
       output.write(c); 
      } 
     } catch (FileNotFoundException fnfe){ 
       System.err.println("The file was not found."); 
       fnfe.getMessage(); 
     } catch (IOException ioe) { 
      System.err.println("The file could not be read."); 
      ioe.getMessage(); 
     }finally { 
      try { 
       output.close(); 
      } catch (IOException e) { 
       System.err.println("The file was not opened."); 
       e.printStackTrace(); 
      } 
      try { 
       input.close(); 
      } catch (IOException e) { 
       System.err.println("The file couldn't be closed."); 
       e.printStackTrace(); 
      } 

     } 


    } 

} 

java.lang.NullPointerExceptionが - 次の行にtryブロックのいずれかでのNullPointerException: output.closeを();. 誰でもその理由を説明できますか?どんな助けもありがとう。前もって感謝します。予期しない例外:上記のコードは、予期しない例外がスロー

答えて

0

ライン

input = new BufferedReader(new FileReader("readfile.txt")); 

outputが初期化される前に投げるかもしれません。したがって、output.close();を実行しようとするとoutput == nullとなります。たぶん、代わりにこのようなものを意味するかもしれません:

if (output != null) 
    output.close(); 
関連する問題