如何在Java中正确创建制表符分隔的文本文件

如何在Java中正确创建制表符分隔的文本文件,java,text,formatting,string-formatting,Java,Text,Formatting,String Formatting,我正在尝试创建一个标签删除的文本文件,以便输出显示为列,但由于某些原因,标签显示在不同的位置。这是由于数据值大小不同造成的 下面是我如何构建行和列的 output.append("|\t" + column1 + "\t\t\t:\t" + column2 +" \t\t\n"); 输出结果如下所示: | activeSessions : 0 | duplicates : 0 | expiredSessions

我正在尝试创建一个标签删除的文本文件,以便输出显示为列,但由于某些原因,标签显示在不同的位置。这是由于数据值大小不同造成的

下面是我如何构建行和列的

output.append("|\t" + column1 + "\t\t\t:\t" + column2 +"  \t\t\n");
输出结果如下所示:

|   activeSessions      : 0         
|   duplicates      : 0         
|   expiredSessions         : 0         
|   rejectedSessions        : 0         
|   sessionMaxAliveTime         : 0         
|   sessionCounter      : 0         
正如您所看到的,第一列上具有较长文本条目的值会导致第二列稍微远离,即使两列由两个选项卡分隔。如何确保第二列位置在同一行上


谢谢

制表符的宽度没有定义,取决于您用来显示文本的内容。如果要对齐列,请使用空格。例如,您可以使用
%10s
的格式与空格对齐。

这与文件是否“正确”无关,而与数据的显示有关,这是一个单独的问题。考虑使用PrtFF(…)或String .Frand(…)或格式化程序类的其他变体来格式化显示的数据。或者,如果是GUI,则显示在JTable中。

您必须将字符串的长度设置为25个字符,并用x个空格填充差异
x=(25-column1.length)
。不要忘记在文本编辑器中使用单空格字体

要填充字符串,可以使用以下方法:

请参阅以获取一些填充代码,并将列内容填充到任意长度

import org.apache.commons.lang.StringUtils;
output.append("|\t" + StringUtils.rightPad(column1, 25) + "\t\t\t:\t" + StringUtils.rightPad(column2, 15) +"  \t\t\n");