次のコードでJavaコードから生成されたテキストファイルから^ M文字を削除する方法を考えています。Javaを使用してプラットフォームに依存しないテキストファイルから^ M文字を削除するにはどうすればよいですか?
public StringBuilder toCsv(Table table) {
StringBuilder stringBuilder = new StringBuilder();
String csv = new String();
for (Column cName : table.getColumns()){
csv += QUOT;
csv += cName.getName();
csv += QUOT;
csv += CSV_SEPERATOR;
}
csv += "\n";
stringBuilder.append(csv);
for (Row row : table) {
Collection<Object> values = row.values();
String csvString = "";
if (values.size() == 10) {
String ep = QUOT + CSV_SEPERATOR + QUOT ;
csvString = StringUtils.join(row.values(),ep);
csvString.replaceAll("\'", "");
csvString = QUOT + csvString + QUOT;
logger.info("line ++++ " + csvString);
}
stringBuilder.append(csvString);
stringBuilder.append("\n");
}
return stringBuilder;
}
その後、私はマイクロソフトのアクセス(.mdb)ファイルからhttp://jackcess.sourceforge.net/を使用してCSVファイルを生成しています
public void writeCsv(String data, String path, String fileName) throws IOException {
String completePath = path + "/" + fileName;
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(completePath)));
try {
out.write(data);
} finally {
out.close();
}
}
コンテキスト
をファイルにデータを書き込むために、次の方法を使用しています。私がcsvを生成してvimを使って開くと、行の途中で^ Mがたくさん見えます。注:私はMacOSの
日午前私は
csvLine.replaceAll("\n\r", "");
と
csvLine.replaceAll("\r\n", "");
と
をCSVファイルに書き込む前に^ M(私はMS WindowsのCARRIAGE_RETURNであると信じて)削除するには、次の試してみましたcsvLine.replaceAll("\\r", "");
生成されたCSV
'10773.0';'';'';'';'Thu Jul 14 00:00:00 CEST 2016';'By Cash';'';'10000.0';'';'2102.0'
'10001.0';'';'';'';'Thu Jul 14 00:00:00 CEST 2016';'Pet Soup cash';'087470^M
^M
^M
087470';'-45000.0';'';'2102.0'
'10360.0';'';'';'';'Thu Jul 14 00:00:00 CEST 2016';'By Cash';'';'37000.0';'';'2101.0'
'10444.0';'';'';'';'Thu Jul 14 00:00:00 CEST 2016';'By Cash';'';'2000.0';'';'2101.0'
上記の1行がわかるように、CSVは望ましくない^ Mで壊れています。 プログラムからそのような文字をファイルから削除する必要があります。^Mと進行ライン
'10001.0';'';'';'';'Thu Jul 14 00:00:00 CEST 2016';'Pet Soup cash';'087470087470';'-45000.0';'';'2102.0'
任意の助けを除去した後
予想される出力が理解されるであろう。
奇妙なことに、数字のように見える奇妙な文字がフィールドにあります。 –
mdbから読み込んだ後、csvファイルをどのように記述するのか正確なコードを表示してください。 –
@Würgspass - 更新コード – amjad