如何使用Java中的try和catch块处理FileNotFoundException?

时间:2016-07-01 06:27:32

标签: java

我写了一个程序,我正在通过BufferedReader读取文件。我正在阅读的文件可能是.txt格式或.csv格式。 我希望如果文件不可用.txt扩展名BufferedReader读取它 .csv扩展名。

我创建了一个字符串“FileName”并在其上存储文件路径。并且在路径变量中我已经存储了文件位置。

path = "C:\Users\Desktop\folder(1)\"

我正在尝试尝试catch block如下。

try
    {
        FileName = path+"abc.txt";
    }
    catch(Exception e)
    {
        FileName = path+"abc.csv";
    }

BufferedReader BR = new BufferedReader(new FileReader(FileName)); 

但我得到java.io.FileNotFoundException

2 个答案:

答案 0 :(得分:1)

BufferedReader SoftwareBundle = new BufferedReader(new FileReader(FileName));

中抛出异常

所以你需要这条线的try / catch-block:

try
    {
        FileName = path+"abc.txt";
        BufferedReader SoftwareBundle = new BufferedReader(new FileReader(FileName)); 
    }
    catch(Exception e)
    {

        FileName = path+"abc.csv";
        BufferedReader SoftwareBundle = new BufferedReader(new FileReader(FileName)); 
    }

答案 1 :(得分:0)

这是代码的理想结构:

String filename = null;
try (BufferedReader bundle = null) {
    try {
        filename = path + "abc.txt";
        bundle = new BufferedReader(new FileReader(filename)); 
    } catch(FileNotFoundException e) {
        filename = path + "abc.csv";
        bundle = new BufferedReader(new FileReader(FileName)); 
    }
    // use 'bundle' here
} catch(FileNotFoundException e) {
    // log that >>neither<< file could be opened.
}

注意:

  1. 不要抓住Exception。如果你这样做,你会发现各种意想不到的东西,除了你预期的例外情况。

  2. 使用&#34;尝试使用资源&#34;确保打开的阅读器始终关闭。

  3. 您需要获得正确的范围...除非您准备复制使用阅读器的代码。

  4. 即使使用&#34;再试一次&#34;逻辑,你仍然需要处理你尝试失败的文件名所有的情况。你需要确保&#34;所有失败&#34;情况并未尝试使用阅读器。