2014-01-23 91 views
-2

我试图从文件的内容创建一个Java String []。阅读文本文件的问题 - java.lang.StringIndexOutOfBoundsException

的代码是:

private String[] arr; 
private List<String> list = new ArrayList<String>(); 

public String[] readfile (String fileName) { 
    try { 
     br = new BufferedReader(new FileReader(fileName)); 

     while((str = br.readLine()) != null){ 
      list.add(str); 
     }   

     arr = list.toArray(new String[list.size()]); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
     if (br != null){ 
      br.close(); 
     } 
     } catch (IOException e2) { 
      e2.printStackTrace(); 
     } 
    } 
    return arr; 
} 

功能显然作品。实际上,变量arr包含文件的内容。

但是,在此行之后,arr = list.toArray(new String[list.size()]);函数不返回arr。我得到java.lang.StringIndexOutOfBoundsException: String index out of range: 0

可能是什么问题?

+3

你能检查一下'list.size()'返回的是什么数字吗? – wtsang02

+3

我不认为这是你提供的引起这个异常的代码。你能提供整个堆栈跟踪吗? –

+1

@ wtsang02如果名单是什么大小,那么它的大小并不重要。如果给定的数组很小以适应列表,'toArray()'方法创建一个新数组。 –

回答

0

最后,我提供的代码导致了异常。问题与try catch块和变量作用域有关。

这里,arr = list.toArray(new String[list.size()]);变量arr包含文件的所有行。但是,在这一行return arr;的内容为空;为此,当我初始化数组时,我在该方法中放置了一个简单的return arr,它起作用。在这种情况下,我没有任何try catch块。