-4
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new ByteArrayOutputStream(), encoding)); 

public void write(final List<Column> columnsList) throws IOException {
        String data = null;
        int length = columnsList.size();
        int writeIndex = 0;
        for (Column cd : columnsList) {
            data = cd.getData();            
            writer.write(data);
            writer.write(getDelimiter()); // it will return '\t'
        }
        writer.write("\n");
    }

上面的代码没有将制表符空间放在文件中,实际上它写的是\t文件中。当我用硬编码的“\t”写文件时,它确实写了制表符空间。但我收到了来自 web 端的“\t”分隔符。我只是选择这个分隔符并与作家一起写作。但是当我在记事本中打开文件时,“\t”实际上是写入文件而不是TAB SPACE

我正在用其他方法关闭作者,所以不用担心关闭作者

4

6 回答 6

1

好吧,我很确定getDelimiter()会返回两个字符的“\t”。

您可以通过以下方式验证它getDelimiter().toCharArray();

简单的解决方案是使用如下代码片段

if (getDelimiter().equalsIgnoreCase("\\t")) then use String.valueOf('\t')
于 2013-04-16T13:05:19.180 回答
1

您不初始化 BufferedWriter 对象。这是一个如何使用bufferedwriter在java中写入文件的示例

于 2013-04-16T09:37:39.590 回答
1

刚刚也试了一下。

工作正常!检查this how to use "tab space" while writing in text file post你可能需要一些配置。

发布整个方法以获取更多信息

FileWriter fstream = new FileWriter("bot.txt", true); //true tells to append data.
BufferedWriter out = new BufferedWriter(fstream);

out.write("bbb" + "\t"+"aaa");
out.close();`
于 2013-04-16T09:37:47.570 回答
0

检查这个问题,也许你在初始化 BufferedWriter 之前遗漏了一些东西

在文本文件中写入时如何使用“制表符空间”

于 2013-04-16T09:34:17.037 回答
0

您的编写器定义不完整,因此我们不知道您使用的是哪个底层流/编写器。

这个例子对我有用:

BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(System.out));
writer.write("a");
writer.write("\t");
writer.write("b");
writer.close();

它在“a”和“b”之间打印一个制表符。

于 2013-04-16T09:35:30.223 回答
-3

你应该打电话给 writer.close();

你来弄吧?

于 2013-04-16T09:33:08.597 回答