2012-02-19 82 views
1

我正在写一个简单的程序,使用Vigenere密码对文本文件中的文本进行加密和解密。该大纲代码粘贴下面java流关闭错误

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(); 
    } 
} 

我从try catch块

Stream closed 

我不明白,在System.in流可以如何被关闭下面的消息? 我犯了什么错误,我该如何解决?

回答

5

,因为你看了在文件名后与第一

br.close(); 

你发出关闭它的流被关闭。

不要关闭该阅读器,也不要为System.in创建一个新的阅读器 - 只需重新使用该阅读器即可。尽管如此,使用不同的阅读文件。

+0

谢谢,我会那样做的。 但是有没有什么方法可以使用相同的缓冲读取器? 这只是出于好奇。 – nikhil 2012-02-19 13:50:30