2017-04-04 10 views
3

csv/tabの別ファイルからインポートしてデータを追加する過程で、コードがデータをアップロードするのに多くの時間を消費します。これをもっと速い方法で行うための選択肢はありますか?これは配列内のフィールドを分割するために使用するコードです。Java String.splitの代わりにパフォーマンスを向上させるために

//Here - lineString = fileReader.readLine() 

public static String [] splitAndGetFieldNames(String lineString ,String fileType) 
{ 
    if(lineString==null || lineString.trim().equals("")){ 
     return null; 
    } 
    System.out.print("LINEEEE " + lineString); 
    String pattern = "(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"; 
    if(fileType.equals("tab")) 
     pattern = "\t" + pattern; 
    else 
     pattern = "," + pattern; 

    String fieldNames[] = lineString.split(pattern); 


    for(int i=0 ; i < fieldNames.length ; i++){ 
     //logger.info("Split Fields::"+fieldNames[i]); 
     if (fieldNames[i].startsWith("\"")) 
      fieldNames[i] = fieldNames[i].substring(1); 
     if (fieldNames[i].endsWith("\"")) 
      fieldNames[i] = fieldNames[i].substring(0, fieldNames[i].length()-1); 
     fieldNames[i] = fieldNames[i].replaceAll("\"\"","\"").trim(); 
     //logger.info("Split Fields after manipulation::"+fieldNames[i]); 
    } 
    return fieldNames; 
} 
+4

車輪を改造する代わりにCSVパーサーを使用してみましたか?最適化され、あなたのコードより速くなるかもしれません – BackSlash

答えて

3

私は車輪の再発明は最高のアイデアではありません、opencsvライブラリを見てみましょうか、とにかくApache Commons

からCSVParserをしようとするあなたをお勧めします。サードパーティのライブラリを使用すると、自分で書くよりも頭痛になることはありません:)

関連する問題