FileExaminer(String filename) {
System.out.println(filename);
java.io.File file = new java.io.File(filename);
System.out.println(file);
Scanner input = null;
try {
input = new Scanner(file);
} catch (FileNotFoundException e) {
System.out.println("fiel not found" + file);
}
System.out.println(input);
System.out.println(input.hasNext());
while(input.hasNextLine()) {
lines.add(input.nextLine());
}
calcluateCharCountAlpha();
}
我有一個奇怪的問題。這是拋出一個空指針異常(也沒有發現文件異常)。我認爲由於某種原因,由於input = null
行,輸入到相同文件的行設置不起作用。但是,如果我刪除= NULL部分 例如:的爲什麼這個try/catch方法不起作用?
Scanner input;
代替
Scanner input = null;
它說,我需要 「初始化」 的變量。 如果我刪除該行完全和更改
try {
input = new Scanner(file);
} catch
到
try {
Scanner input = new Scanner(file);
} catch
然後輸入無法解析
,如果我刪除上面的,並嘗試只是做
Scanner input = new Scanner(file);
其中
Scanner input = null;
是。 (不在try/catch塊),它說它需要一個try/catch塊。
據我所知。我不能在try/catch中聲明輸入或者在try/catch之外不可訪問。
如果我外面聲明它並給它的try/catch內的值沒有的try/catch那麼它不會被初始化
如果我外面聲明它和外面爲它分配一個值和外分配一個值在外部給它一個值將取代try/catch中給出的值
如果我只聲明它並在try/catch之外分配它的值,它說它必須在try/catch中。
所以這應該是怎樣。如果你得到一個FileNotFoundException
,你不能只是抓住它,打印錯誤消息,並繼續工作嗎?(這開始變得很無奈)
現在我有try/catch語句的工作,但它仍然有一個文件未發現異常,即使文件是存在的......其導入到相同的封裝類,所以它應該是工作......我可以告訴變量正在獲取正確的值(與一些策略性地放置的打印語句),那是什麼文件被稱爲(即使區分大小寫)它只是沒有找到他們,即使它有正確的名稱。 – namenotfound
@namenotfound「將其導入與類相同的包中,因此它應該工作」不,它不應該。在包中導入文件與在運行時訪問文件完全無關。避免文件未找到異常的唯一方法是確保文件實際存在於您正在讀取文件的絕對路徑中。 – dasblinkenlight
那麼如何告訴它在哪裏找到它而不是給它「whatever.txt」? – namenotfound