2012-02-19 10 views
1

私はVigenere Cipherを使ってテキストファイルからテキストを暗号化して解読する簡単なプログラムを書いています。アウトラインコードは、私がトライcatchブロックjavaストリーム閉鎖エラー

Stream closed 

から次のメッセージが表示されます

import java.io.*; 
public class VigenereCipher 
{ 
    public static void main(String [] args) 
    throws IOException 
    { 
     char [][] cipherKey = new char[26][26]; 
     String fileName, keyword; 
     System.out.println("Enter the file Name to Read"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     fileName = br.readLine(); 
     System.out.println("Enter the Keyword"); 
     keyword = br.readLine(); 
     keyword = keyword.toUpperCase(); 
      br.close(); 
     //to read the file line by line and convert 
     br = new BufferedReader(new FileReader(fileName)); 
     while((line = br.readLine()) != null){ 
      line = line.toUpperCase(); 
      //More code to perform the substitution, removed to reduce the code 
     } 
     br.close(); 
     //code for decryption 
     System.out.println("Enter the filename to decode"); 
       try 
       { 
     BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in)); 
     fileName = br1.readLine(); 
       br1.close(); 
       }catch(Exception ex){ System.out.println(ex.getMessage());} 
       System.out.println(fileName); 
     br = new BufferedReader(new FileReader(fileName)); 
     while((line = br.readLine()) != null){ 
      line = line.toUpperCase(); 
      //The decryption code is here 
     } 
      br.close(); 
    } 
} 

の下に貼り付けられ、私はSystem.inストリームを閉じることができるか、理解していませんか? 私は間違いを犯していますが、どうすれば修正できますか?あなたはファイル名を読んだ後に発行する最初の

br.close(); 

でそれを閉じているので

答えて

5

ストリームが閉じられています。

System.inの新しいものを作成しないでください。ただ再使用してください。しかし、ファイルから読み込むために別のものを使用してください。

+0

ありがとう、私はそれをします。 しかし、同じバッファ付きリーダーを使用できる方法はありますか? これはちょうど好奇心から外れています。 – nikhil