Excelから複数のcsvファイルにすべてのデータを書き込むプログラムを作成しようとしています。
現在、私のプログラムはn個のファイルを作成し、Excelの最後の行だけが最後のcsvファイルに書き込まれています。
プログラミングの背景観察:
ファイルが書き込んでいるようです。しかし、書き込まれた行ごとに、どういうわけか同じファイルが250回作成されます。最後に書き込まれた行を消去します。
OutputStreamまたはBufferedWriterの使用に問題がある可能性があります。私はそれが何であるかを理解することができません。
writeRow()メソッド:
public static void writeRow(BufferedWriter bw, Cell[] row) throws IOException {
if (row.length > 0) {
bw.write(row[0].getContents());
for (int j = 1; j < row.length; j++) {
bw.write(',');
bw.write(row[j].getContents());
}
}
}
setFile()メソッド:
public static BufferedWriter setFile (int i) throws IOException {
i=i/250;
File f = new File(dir + "file-" + (i+1) + ".csv");
// If i has changed, create a new file. Else, append to current file.
String encoding = "UTF8";
OutputStream os = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
Boolean append = null;
try {
// If i has changed, create a new file, else append.
if (i%250==0) {
append = new Boolean("TRUE");
os = new FileOutputStream(f,append);
} else {
append = new Boolean("FALSE");
os = new FileOutputStream(f, append);
}
osw = new OutputStreamWriter(os, encoding);
bw = new BufferedWriter(osw);
} finally {
os.close();
osw.close();
}
return bw;
}
例外は次のとおりです。
Exception in thread "main" java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.BufferedWriter.flush(Unknown Source)
at Main.main(Main.java:46)
以下は、コードへのリンクの一部です。
私は何が間違っているのですか?
これがsvnトランクです:
https://franz-opensource.googlecode.com/svn/trunk/ExcelToCsv- _