簡體   English   中英

在文件上使用 BufferedReader 時出現 FileNotFoundException

[英]FileNotFoundException when using BufferedReader on a file

我對讓基本的文件讀取與 Java 一起工作感到非常困惑。 許多混合信號。

我已經嘗試了幾種不同的方法,並且每次都始終遇到未找到的異常。 我檢查了一個文件對象設置為當前路徑以打印當前目錄,我確實在我試圖打開的文件所在的目錄中。權限設置為每個人都可以閱讀。 我不確定發生了什么:

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));

這是引發錯誤的行,因此使用 infixLines 的每個連續行也會引發錯誤。

我也嘗試過使用 FileInputStream 並得到相同類型的錯誤。

這就是說簡單地做

File file = new File("input.infix");
if ( file.exists() )
    System.out.println( "Exists" );

確實有效。

很困惑。

編輯:(堆棧跟蹤?)

ParseInfix.java:13: unreported exception java.io.FileNotFoundException; must be
            BufferedReader infixLines = new BufferedReader(new FileReader (n
                                                           ^
ParseInfix.java:15: unreported exception java.io.IOException; must be caught or
            while ( ( line = infixLines.readLine()) != null )

異常跟蹤是說您的代碼...

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));

如果文件不存在,可能拋出FileNotFoundExceptionIOException ,因此它希望您做一些事情來處理這種可能性。

最簡單的方法是將文件讀取代碼包裝在像這樣的try-catch塊中......

try {
    BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));
    // other reading code here
}
catch (FileNotFoundException e){
    System.out.println(e);
}
catch (IOException e){
    System.out.println(e);
}

例外並不是說找不到文件,只是說如果文件不存在,您的代碼將如何處理這種情況。

最終,在catch塊中,您想要做的不僅僅是System.out.println() 例如,在 GUI 程序中,您可能會顯示一條彈出消息,告訴用戶該文件不存在。

這條線

BufferedReader infixLines = new BufferedReader (new FileReader("input.infix"));

搜索 File: input.infix ,如果沒有找到則返回FileNotFoundException異常。 確保input.infix位於與java file相同的目錄中。

它是一個編譯錯誤,而不是運行時異常。

您需要將與 File 相關的調用包裝在 try-catch 塊中並處理FileNotFounceExceptionIOException

試試這個

String fileName = "input.infix";
File fil = new File(fileName);
String filePath = fil.getAbsolutePath();
BufferedReader infixLines = new BufferedReader(new FileReader(filePath));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM