11

私は csv パーサーに取り組んでいます。ヘッダーと残りの csv ファイルを別々に読みたいです。これがcsvを読み取るための私のコードです。

現在のコードは csv ファイル内のすべてを読み取りますが、ヘッダーを個別に読み取る必要があります。これに関して私を助けてください。

public class csv {

private void csvRead(File file)
{
    try
    {
    BufferedReader br = new BufferedReader( new FileReader(file));
    String strLine = "";
    StringTokenizer st = null;
    File cfile=new File("csv.txt");
    BufferedWriter writer = new BufferedWriter(new FileWriter(cfile));
    int tokenNumber = 0;

    while( (strLine = br.readLine()) != null)
    {
            st = new StringTokenizer(strLine, ",");
            while(st.hasMoreTokens())
            {

                    tokenNumber++;
                    writer.write(tokenNumber+"  "+ st.nextToken());
                    writer.newLine();
            }


            tokenNumber = 0;
            writer.flush();
    }
}

    catch(Exception e)
    {
        e.getMessage();
    }
}
4

4 に答える 4

6

Commons CSVの利用をご検討ください。このライブラリは、RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Filesに従って記述されています。そのような行を読むのに互換性があるもの:

"aa,a","b""bb","ccc"

使用方法は非常に簡単です。クラスは 3 つしかなく、ドキュメントによると小さなサンプルがあります。

区切り文字としてタブ、オプションの値のカプセル化子として「"」、および「#」で始まるコメントを持つ csv 文字列の解析:

 CSVFormat format = new CSVFormat('\t', '"', '#');
 Reader in = new StringReader("a\tb\nc\td");
 String[][] records = new CSVParser(in, format).getRecords();

さらに、このパーサーはすでに定数として利用可能です。

  • DEFAULT - RFC 4180 で定義されている標準のコンマ区切り形式。
  • EXCEL - Excel ファイル形式 (値の区切り文字としてカンマを使用)。
  • MYSQL - SELECT INTO OUTFILE および LOAD DATA INFILE 操作で使用されるデフォルトの MySQL 形式。TDF - 集計区切り形式。
于 2012-06-26T16:37:11.293 に答える
3

OpenCSVを検討しましたか?

以前の質問はこちら...

Java用CSV API

ヘッダーを簡単に分割できるように見えます...

String fileName = "data.csv";
CSVReader reader = new CSVReader(new FileReader(fileName ));


// if the first line is the header
String[] header = reader.readNext();

// iterate over reader.readNext until it returns null
String[] line = reader.readNext();
于 2012-06-26T16:04:01.147 に答える