写入文件无法识别 和 t 作为转义字符



我在数据库中有包含 的记录。

NAME            |  ROW  | COL  
-------------------------------
name            |   1   |   1  
address         |   1   |   2  
teln no        |   1   |   3  
employeedn id  |   1   |   4  

然后,我还在数据库 (\t( 中保存了我的分隔符,用于文本写入

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

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

nametaddressttelnon notemployeedn 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();

这可能取决于您运行应用程序的操作系统,至少对于行分隔符。

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 上,它是 rn (。

根据这个问题,t应该有效,它对我有用。可能是您的配置没有给您一个选项卡,而是"\t" ,这意味着文字t。 在这种情况下,您可以将 ascii 字符 for 选项卡存储在数据库中,而不是 t

最新更新