0

我正在使用BufferedWriter将字符串写入这样的文件:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Test {

    public static void main(String[] args) throws IOException {
       String myname = "JOHN DOE MAXWELL";
       String myotherName = "MELCHIZEDEK NEBUCHARDINEZZAR";
       String mylocation = "SOUTH EAST";
       String myotherlocation = "SOUTH WEST";
       File f = new File("MyFile.txt");
       BufferedWriter bw  = new BufferedWriter(new FileWriter(f));
       bw.write(myname + "                       " + mylocation);
       bw.newLine();
       bw.write(myothername + "                  " + myotherlocation);
       bw.close();
    }
}

我需要这样写mylocation,无论字符串的长度如何,都不会影响myname的开始位置。mylocation请协助。

我的输出应该是:

JOHN DOE MAXWELL          SOUTH EAST
MELCHIZEDEK NEBUCHARDI    SOUTH WEST
4

4 回答 4

3

你可以做

bw.write(String.format("%-20s%s%n", myName, myLocation));

您可以使用 PrintWriter 来使用 printf() 两者兼而有之。

例如使用 PrintWriter

pw.printf("%-" + myNameWidth + "s%s%n", myName, myLocation);
于 2013-04-11T13:18:44.197 回答
1

这样无论字符串 myname 的长度如何,mylocation 的开始位置都不会受到影响

我能想到的唯一情况是每个人都在一个新行中。

您必须指定最大允许长度,在此之后不再保证此顺序,格式化实际上应该发生在读取文件时,此时您可以确定 myname 的最长变量并根据它格式化输出。

于 2013-04-11T13:19:02.037 回答
1

尝试这个

bw.write(myname + "                             ".substring(0, 30) + " " + mylocation);
于 2013-04-11T13:20:29.850 回答
1

使用谷歌番石榴

Strings.padEnd("JOHN DOE MAXWELL", 26, ' ').length()

字符串的长度始终为 26 个字符。

于 2013-04-11T13:25:01.940 回答