我写了一个程序,我正在通过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
。
答案 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.
}
注意:
不要抓住Exception
。如果你这样做,你会发现各种意想不到的东西,除了你预期的例外情况。
使用&#34;尝试使用资源&#34;确保打开的阅读器始终关闭。
您需要获得正确的范围...除非您准备复制使用阅读器的代码。
即使使用&#34;再试一次&#34;逻辑,你仍然需要处理你尝试失败的文件名所有的情况。你需要确保&#34;所有失败&#34;情况并未尝试使用阅读器。