2016-05-31 24 views
0

byte[]のファイルをカンマで区切って引用符で囲んでいますが、OpenCSVを使用してCSV形式で保存します。私はusing thisですので、CSV形式で保存してください。バイトからのCSVファイルの書き込み

次の配列に[]バイトを変換し、ファイルに保存する私のコードです

byte[] bytes = myByteStream.getFile(); 

String decoded = new String(bytes, "UTF-8");    
//String lines[] = decoded.split("\\r?\\n"); 


FileOutputStream fos = new FileOutputStream("/home/myPC/Desktop/test.csv"); 
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); 
CSVWriter writer = new CSVWriter(osw); 
String[] row = {decoded}; 

writer.writeNext(row); 
writer.close(); 
osw.close(); 

しかし、これは上記のコードの周りに余分な引用符を入れても1行のすべての行をマージします。

これを正しく行う方法についてのヘルプがありますか?

+0

のJavadocで(コモンズCSVは、ここで使用)

CSVParser parser = CSVFormat.newFormat(',').parse( new InputStreamReader(new ByteArrayInputStream(bytes), "UTF8")); CSVPrinter printer = CSVFormat.newFormat(',').print(out); for (CSVRecord record : parser) { try { printer.printRecord(record); } catch (Exception e) { throw new RuntimeException("Error at line " + parser.getCurrentLineNumber(), e); } } parser.close(); printer.close(); 

ルックのようなものを必要とします改行で分割されていますか? – uniknow

答えて

1

あなたは、例えば、CSVWriterのコンストラクタ内のセルの値に引用符を追加防止することができる:全バイト配列に関して

CSVWriter writer = new CSVWriter(osw, CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER); 

は、単一の行として存続しました。元のファイル内に改行がありますか?

あなたは次のようにして逃げる可能性があるので、場合:

BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "ASCII")); 

String line; 
while ((line = reader.readLine()) != null) { 
    // Handle the line, ideally in a separate method 
} 

を私はApache Commons CSVが良いCSVライブラリだと思うsplitting a byte array on a particular byte

0

からこれを手に入れました。貼り付けられたコードから、ファイルの内容を何らかの形で変更したいのか、単にコピーするのかは明らかではありません。後者の場合、ファイルをCSVレコードとして解析する必要はありません。バイトごとにコピーするだけです。あなたは、ファイルの内容を変更する必要がある場合は前者の場合、すなわち、あなたはバイト配列内の行がありますCSVFormat

関連する問題