0

如何读取和打印文本文件中的内容?

我可以直接调用readFile()方法showInputDialog()吗?例如:

  String q = (String)JOptionPane.showInputDialog(frame, 
                       "what is your name", 
                       "Get Name   Demo",
                       JOptionPane.PLAIN_MESSAGE, 
                       null, 
                       null, 
                       readText());

private String readText()throws Exception{
    BufferedReader reader = null; 

       reader = new BufferedReader(new FileReader("data/name.txt")); 
            String name = reader.readLine();  
            StringTokenizer st = new StringTokenizer(name, " ");
            String NAME= st.nextElement().toString();

           if(reader!=null) 
           reader.close();             

        return NAME;
    }

错误:未报告的异常 java.lang.Exception;必须捕获或声明抛出

4

2 回答 2

0

您的readText方法会引发您需要控制的已检查异常。

您可以为其使用try-catch块或throws在使用您的readText方法的方法中添加子句。

这样做:

try{
String q = (String)JOptionPane.showInputDialog(frame, 
                       "what is your name", 
                       "Get Name   Demo",
                       JOptionPane.PLAIN_MESSAGE, 
                       null, 
                       null, 
                       readText());
}catch(Exception e){
//do the stuff that you want to do if there was some prblem reading your file
}

或者在包含上述代码部分throws Exception的方法中添加一个子句。String q = ....

您可能想做的另一件事是try-catch在您的方法中放置一个块readText,并将从文件中读取的内容存储在一个字符串中,然后在 catch 块中创建一个包含一些消息的字符串,Unable to read file然后从您的方法中返回该字符串。

private String readText(){
// Note that I have removed that throws Exception from above
BufferedReader reader = null;
String myText=""; 
try{
       reader = new BufferedReader(new FileReader("data/name.txt")); 
       String name = reader.readLine();  
       StringTokenizer st = new StringTokenizer(name, " ");
       String NAME= st.nextElement().toString();
       myText = NAME;            
}catch(Exception e){
       myText = "Unable to read file";//or any message you want to convey

}finally{
       if(reader != null){
             try{
             reader.close();
             }catch(Exception e){
             }
       }
}
return myText;

}
于 2012-11-17T10:27:14.127 回答
0

您忘记处理被调用方法中的异常,因此请避免像这样抛出

private String readText(){


    BufferedReader reader = null; 
    String NAME ="";

    try
    {

           reader = new BufferedReader(new FileReader("data/name.txt")); 
           String name = reader.readLine();  
           StringTokenizer st = new StringTokenizer(name, " ");
           NAME= st.nextElement().toString();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
    finally
    {
         if(reader!=null) 
               reader.close();  
    return NAME;
    }
}
于 2012-11-17T10:28:10.830 回答