Javaではapache.commons.csvライブラリを使用しています。次のコードを使用して、Webページから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();
ただし、このファイルを開いて後で読み取るために、このライブラリに簡単にこのファイルをコンピューターに書き込む方法が見つかりません。
このコードを試してファイルを保存しました。
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));
これは「print:」のみを出力します
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、」
すべてのレコードを同じ行に印刷しているようです。
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();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加