在文本文件中读取的问题,恼人的错误

时间:2016-09-12 06:43:27

标签: java

我正在尝试解析此文本文件,但我一直收到错误

  

"错误读取文件异常"

来自我的代码。我一遍又一遍地看着代码,我看不出有什么问题。关于什么可能是错误的任何想法?我知道它不是文本文件的路径,因为我做了一个快速简单的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;
}

1 个答案:

答案 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;
}