我正在尝试解析此文本文件,但我一直收到错误
"错误读取文件异常"
来自我的代码。我一遍又一遍地看着代码,我看不出有什么问题。关于什么可能是错误的任何想法?我知道它不是文本文件的路径,因为我做了一个快速简单的I / O程序来测试它,并且它有效。
public static List<String> parseCode() {
List<String> inputList = new ArrayList<String>();
String File = "Sample1.txt";
String line = null;
try
{
FileReader fr = new FileReader(File);
BufferedReader br = new BufferedReader(fr);
String add = "";
boolean comment = false;
while((line = br.readLine()) != null)
{
String [] s = line.split(" ");
for(int i = 0; i < s.length; i++)
{
if(s[i].contains("/*"))
{
comment = true;
}
if(!comment)
{
add += s[i];
if(i < s.length-1 && add.length() > 0)
{
add += " ";
}
}
if(s[i].contains("*/"))
{
comment = false;
}
}
if(add.length() > 0)
{
inputList.add(add);
}
br.close();
}
}
catch(FileNotFoundException E)
{
System.out.println("File Not Found");
}
catch(IOException E)
{
System.out.println("Error Reading File Sample1.txt");
}
return inputList;
}
答案 0 :(得分:1)
您的br.close();
位于while
- 循环中,但应该在循环之后。
这样,您在阅读第一行后关闭文件。
因此固定代码(未经测试)应如下所示:
public static List<String> parseCode() {
List<String> inputList = new ArrayList<String>();
String File = "Sample1.txt";
String line = null;
try
{
FileReader fr = new FileReader(File);
BufferedReader br = new BufferedReader(fr);
String add = "";
boolean comment = false;
while((line = br.readLine()) != null)
{
String [] s = line.split(" ");
for(int i = 0; i < s.length; i++)
{
if(s[i].contains("/*"))
{
comment = true;
}
if(!comment)
{
add += s[i];
if(i < s.length-1 && add.length() > 0)
{
add += " ";
}
}
if(s[i].contains("*/"))
{
comment = false;
}
}
if(add.length() > 0)
{
inputList.add(add);
}
}
br.close();
}
catch(FileNotFoundException E)
{
System.out.println("File Not Found");
}
catch(IOException E)
{
System.out.println("Error Reading File Sample1.txt");
}
return inputList;
}