导入.txt文件并将其保存到类中

时间:2014-10-15 02:40:06

标签: java arrays import

我正在尝试导入存储在.txt文件中的值,并使用数组将其存储在类中。 但我不能这样做我得到ArrayIndexoutofboundException1错误。 能帮帮我吗。

我的文字文件是这样的

#查看所有文本
#这里的东西 91220菲格罗亚&博览会213-749-9302
91220菲格罗亚&博览会213-749-9302
91220菲格罗亚&博览会213-749-9302
91220菲格罗亚&博览会213-749-9302

我有一个名为prereqclass的类 这是我的代码

if(context.getAttribute(“Preqattr”)== null)

{

    ArrayList<prereqclass> prereqcl = new ArrayList<prereqclass>();
        String file = this.getServletContext().getRealPath("/") + "download.txt";
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;
            while ((line = br.readLine()) != null) {
             if (line.trim().startsWith("#")) {
                    // do nothing
                 System.out.println("Entering # loop");
                }else{
                    System.out.println("Entering the lines");
               String[] tokens = line.split("/t");
                 prereqcl.add(new prereqclass(tokens[0].trim(),tokens[1].trim(),tokens[2].trim() ) );
                 System.out.println("Attempt Success");
               for (String token : tokens)
                    System.out.println("\t" + token.replace('"', ' ').trim() );

                System.out.println("-------------------");

               }

               }

                br.close();

            context.setAttribute("Preqattr", prereqcl);
               }


               catch(IOException e){
            e.printStackTrace();
        }       
    }

这是错误 java.lang.ArrayIndexOutOfBoundsException:1     在prereq.prereqserv.init(prereqserv.java:64)

2 个答案:

答案 0 :(得分:0)

解决此类问题的正确方法是逐行逐步执行代码。设置错误所在的断点,然后查看每个变量并确定变量是否应该是它应该是什么。如果不是,那么再次尝试单步执行代码,看看变量是如何进入坏状态的。

正如一个暗示我猜测令牌并没有你想象的那么多。你应该检查一下为什么会这样。

答案 1 :(得分:0)

这一行:

String[] tokens = line.split("/t");

可能是尝试拆分制表符分隔的行,但是您使用的是正斜杠而不是反斜杠。它应该是:

String[] tokens = line.split("\t");

在尝试索引之前,您应该检查tokens的长度,以帮助捕获这些类型的错误。即使进行了上述更改,如果您遇到因任何原因未按制表符分隔的行,您将获得相同的异常。我建议使用长度检查包装您访问tokens数组的代码:

if (tokens.length >= 3) {
    prereqcl.add(new prereqclass(tokens[0].trim(),tokens[1].trim(),tokens[2].trim() ) );
}
else {
    System.out.println("Only found " + tokens.length + " tokens.");
}