2017-05-16 6 views
0

エスケープ文字として\ nと\ tを認識しません。のjava - ファイルへの書き込みは、私は nを含むデータベース内のレコードを持っている

NAME   | ROW | COL 
------------------------------- 
name   | 1 | 1 
address   | 1 | 2 
tel\n no  | 1 | 3 
employeed\n id | 1 | 4 

その後、私はまた、テキストの書き込みのために、私の区切り文字を保存し、データベース内(\ tの)私はすでにテキストファイルにそれらの値(最初のテーブル)を書きたいその後

DELIMITER | FILENAME_LOCATIO 
---------------------- 
\t  | SAMPLETEXT 

、 this..itではなく、それは

name\taddress\ttelno\n no\temployeed\n id 

テキストファイルは次のようになります。通常のテキストとして印刷され、エスケープ文字を認識しないように、それは印刷し...

ここでは
name address telno 
no employeed 
id 

は、それはあなたが、少なくとも行区切り文字のために、上でアプリケーションを実行しているOSに依存する場合があります。..

FileWriter fw = new FileWriter(config.get("FILENAME_LOCATION").toString(), true); 
BufferedWriter w = new BufferedWriter(fw); 

List<Map<String, Object>> headers = sampleMapper.selectHeader(); 

for (Iterator<Map<String, Object>> iterator = headers.iterator(); iterator.hasNext();) { 
    Map<String, Object> map = (Map<String, Object>) iterator.next(); 
    w.write(map.get("NAME").toString());  
    w.write(config.get("DELIMITER").toString()); // returns \t in String format 
} 

w.close(); 
+1

'config.get( "DELIMITER")'、実際に何を返すのですか?そのオブジェクトの 'toString()'は実際に何を返しますか? –

+1

dbには実際の「タブ」を格納する必要があります。「\ t」ではありません。 – assylias

+0

私は – john1717

答えて

0

を使用してコードイムです。

try (BufferedWriter w = new BufferedWriter(new FileWriter("c:\\test.txt", false))) 
{ 
    w.write("hello"); 
    w.write("\t"); 
    w.write("hello"); 
    w.write(System.getProperty("line.separator")); 
    w.write("world"); 
    w.write("\t"); 
    w.write("world"); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

このコードは、システムプロパティは、(Windows上で、それは\r\nである)あなたがにしているマシンの正しい区切り記号を提供しますように、私のWindows上で正常に動作します。

this questionによると、\tは動作するはずですし、それは私のために行います。それはあなたの設定はあなたにタブを与えるものではありませんということはなく、リテラル\tを意味"\\t"、かもしれません。その場合は、あなたの代わりに\tのデータベースにタブのASCII文字を格納することができます。

関連する問題