2016-03-29 81 views
4

私はapache.commons.csv library in Javaを使用しています。しかし、私は簡単にそれを開くために、自分のコンピュータにこのファイルを書き込むためにこのライブラリの方法を見つけて読むことができませんJava - Apache.commons.csvでCSVファイルを書き込む

InputStream input = new URL(url).openStream(); 
     Reader reader = new InputStreamReader(input, "UTF-8"); 

     defaultParser = new CSVParser(reader, CSVFormat.DEFAULT); 
     excelParser = new CSVParser(reader, CSVFormat.EXCEL.withHeader()); 

     defaultParsedData = defaultParser.getRecords(); 
     excelParsedData = excelParser.getRecords(); 

:私はこのコードをWebページからCSVファイルを読んでいます後でそれから。

私はファイルを保存するためにこのコードを試しました。私はこのコードを使用してファイルを読み込むしようとすると、

String outputFile = savePath+".csv"; 
     CSVPrinter csvFilePrinter = null; 
     CSVFormat csvFileFormat = CSVFormat.EXCEL.withHeader(); 
     FileWriter fileWriter = new FileWriter(outputFile); 
     csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat); 

     for (CSVRecord csvRecord : excelParser) { 
      for(String dataPoint: csvRecord){ 
       csvFilePrinter.print(dataPoint); 
      } 
      csvFilePrinter.print('\n'); 
     } 

     fileWriter.flush(); 
     fileWriter.close(); 
     csvFilePrinter.close(); 

しかし、何も出力しません:

InputStream input = new FileInputStream(cvsFilePath); 
     Reader reader = new InputStreamReader(input, "UTF-8"); 

     CSVParser load = new CSVParser(reader, CSVFormat.EXCEL); 
     //TEST THAT IT WORKED 
     java.util.List<CSVRecord> testlist = load.getRecords(); 
     CSVRecord dataPoint = testlist.get(0); 
     System.out.println("print: " + dataPoint.get(0)); 

これだけプリントを行う "印刷:" 私が追加した場合

System.out.println("print: " + dataPoint.get(1)); 

それは与えます

スレッド "メイン" java.lang.ArrayIndexOutOfBoundsException:1

私は保存したCSVは、その後、空白行、そこにあるメモ帳でファイルを開く:

2016-03-04,714.98999,716.48999,706.02002,710.890015,1967900は、 710.890015、 " "、2016-03-03,718.679993,719.450012,706.02002,712.419983,1956800,712.419983、」 "2016-03-02,719.00,720.00,712.00,718.849976,1627800,718.849976、"

+0

「データを正しく書き込めませんでした」とはどういう意味ですか? – Berger

+0

@Bergerまあ、私はコードを正しく書いていないと確信しています。保存するファイルは、Webページから読み込んだファイルと同じファイルではありません。私は、パーサーにあるファイルを保存するためにApache Commonsに単純なビルトインメソッドがなければならないと考えましたが、それを見つけることができなかったので、そうするように試みました。 – jonbon

+0

サンプル入力と出力を表示できますか? – Berger

答えて

4

に見えます同じ行のすべてのレコードを印刷しているようです。 printRecordsよう

他の方法は、より便利になります。

String outputFile = savePath+".csv"; 
CSVPrinter csvFilePrinter = null; 
CSVFormat csvFileFormat = CSVFormat.EXCEL.withHeader(); 
FileWriter fileWriter = new FileWriter(outputFile); 
csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat); 

csvFilePrinter.printRecords(excelParser.getRecords()); 


fileWriter.flush(); 
fileWriter.close(); 
csvFilePrinter.close(); 
0

あなたがCSVPrinter、ないてFileWriterをフラッシュし、クローズしたことがありますか?

関連する問題