java - 写入文件不会将\ n和\ t识别为转义字符

时间:2017-05-16 11:33:50

标签: java file

我在数据库中有包含\ 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

然后,当我已经想要将这些值(第一个表)写入文本文件时,它会像这样打印..它不识别转义字符,而是打印为普通文本

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

文本文件应如下所示..

name    address    telno
 no    employeed
 id

以下是使用..

的代码
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 个答案:

答案 0 :(得分: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上运行正常,因为系统属性将为您提供正确的分隔符(在Windows上,它为\r\n)。

根据this question\t应该有效,而且对我有用。可能是您的配置没有为您提供标签,但"\\t"表示文字\t。在这种情况下,您可以在数据库中存储ascii char for tab而不是\t