2011-07-13 59 views
1

我有一個讀取管道分隔文件的要求,並將它填充到字符串數組中,並將其作爲列表傳回並在下面進一步處理 。Java空值導致讀取管道分隔文件時出現問題

Sample data : X|ABCD|001111006|1111006|ABC|test006| | | | | |C||||||||||||| 
    Note : Sample data can have both NULL and space between pipe 

這是工作正常,如果數據是在所有的管區劃界定可用,至少一個空間, 但在管之間的空值

有26個屬性和每當有NULL陣列索引不是 從NULL可用的基數增加。說時,有12個管陣列未填充,直到25 NULL它停在12,這在我的進一步處理

craeting問題和文件可以同時具有NULL和空間。你能不能幫我解決這個問題

public List<String[]> readFile(String FileName) { 

final List<String[]> userList = new ArrayList<String[]>(); 
BufferedReader bufferedreader = null; 
try { 

    int i=0; 
    bufferedreader = new BufferedReader(new FileReader(FileName)); 
    String line = null; 

    while ((line = bufferedreader.readLine()) != null) {  
      final String[] values = line.split("\\|"); 
      userList.add(values); 
     } 
} 
catch (FileNotFoundException ex) { 
    CTLoggerUtil.logError(ex.getMessage()); 
} 
catch (IOException ex) { 
    CTLoggerUtil.logError(ex.getMessage()); 
} 
finally { 
    try { 
    if (bufferedreader != null) 
    { 
     bufferedreader.close();} 
    } 
    catch (IOException ex) { 
     CTLoggerUtil.logError(ex.getMessage()); 


    } 
} 

return userList; 
    } 
+1

String.split()的文檔說連續的分隔符不被視爲一個。你可以檢查分割後的值是多少? – SJuan76

回答

3

默認情況下,String.split()丟棄空尾隨字符串。如果你設置了一個負數限制,你也會得到所有空的結果:

final String[] values = line.split("\\|", -1); 
+0

感謝這工作。這正是我想要的。還有空間代替空值。有沒有什麼辦法可以保留輸入NULLS爲空值和空間輸入作爲空間還是不可能?非常感謝您的幫助 – user549432

+0

使用以上方法你的數組將包含「」的空間,「」(空字符串)爲空值。所以你可以區分兩者。如果你的問題是,如果分割實際上可以把空數組中的每一個空值(而不是空字符串),我認爲答案是否定的。 –