1

以下のコードで、次の例外を解決できませんでした。BufferedReader の使用方法の問題は何ですか? メインメソッド内で BufferedReader を使用しています

出力:-

ParseFileName.java:56: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown 

BufferedReader buffread = new BufferedReader (new FileReader("file.txt"));

// ParseFileName  is used to get the file name from a file path 
// For eg: get  - crc.v  from "$ROOT/rtl/..path/crc.v"

import java.util.regex.Pattern;
import java.io.*;

public class ParseFileName { 

  //Split along /'s , and collect the last term. 
  public String getName (String longName) { 
      String splitAt = "/";
      Pattern pattern1 = Pattern.compile(splitAt);
      String[] parts  = pattern1.split(longName);
      System.out.println("\nparts.length =  " + parts.length);

      //Return the last element in the array of strings 
      return parts[parts.length -1]; 
  }

  public static void main(String[] args) { 
    ParseFileName  superParse = new ParseFileName();  
    BufferedReader buffread = new BufferedReader (new FileReader("file.txt"));
    String line;
    while ((line = buffread.readLine())!= null) {
        String fileName = superParse.getName(line);
        System.out.println("\n" + line + "  =>  " + fileName);
    }
    buffread.close();

  }

}

更新: 以下の作品:

public static void main(String[] args) throws FileNotFoundException, IOException { 

ただし、try.. catch にはまだいくつかの厄介な問題があります。

try {
BufferedReader buffread = new BufferedReader (new FileReader("file.txt"));
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
} catch (IOException ex2) {
   ex2.printStackTrace();
}

buffread はファイル名を取得していないようです。次のエラーが表示されます。

javac ParseFileName.java ParseFileName.java:67: cannot resolve symbol

記号 : 変数バッファリード

location: class ParseFileName

while ((line = buffread.readLine())!= null) {
4

4 に答える 4

1

あなたのコードはFileNotFoundException、 またはIOExceptionwhich is Checked Exceptionをスローできます。コードを try-catch ブロックで囲むか、メイン関数に throws 宣言を追加する必要があります。

于 2013-09-23T21:04:35.120 に答える