2014-01-23 90 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塊。