Java 将字符串写入文件中的特定位置

Java 将字符串写入文件中的特定位置,java,io,bufferedwriter,Java,Io,Bufferedwriter,我使用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

我使用
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
你可以

bw.write(String.format("%-20s%s%n", myName, myLocation));
您可以使用PrintWriter来使用printf(),它同时执行这两个功能

e、 g.使用PrintWriter

pw.printf("%-" + myNameWidth + "s%s%n", myName, myLocation);
你可以

bw.write(String.format("%-20s%s%n", myName, myLocation));
您可以使用PrintWriter来使用printf(),它同时执行这两个功能

e、 g.使用PrintWriter

pw.printf("%-" + myNameWidth + "s%s%n", myName, myLocation);
这样,无论字符串myname的长度如何,开头 我的位置不会受到影响

我能想到的唯一情况是每个人都在一条新的线路上

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

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

我能想到的唯一情况是每个人都在一条新的线路上

您必须指定最大tolerted长度,超过该长度后,此顺序将不再得到保证,格式化实际上应在读取文件时进行,此时您可以确定myname的最长变量,并根据该变量对输出进行格式化。

尝试此方法

bw.write(myname + "                             ".substring(0, 30) + " " + mylocation);
试试这个

bw.write(myname + "                             ".substring(0, 30) + " " + mylocation);
使用:

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

使用:


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

请编辑您的问题,以包括您希望生成的文件的示例。可能有两个不同长度的示例
myname
s?在某一点插入?请编辑您的问题,以包括您希望生成的文件的外观示例。也许有两个例子,长度不同
myname
s?在某个点插入?回答得很好。人们还可以使用相同的技术生成一种通用的pad-to-length方法。请参阅示例。您需要另一个
%-20s
%-32s
或任何您想要的宽度。注意
-
假设您希望左对齐。没有它,字符串就像数字一样右对齐。顺序不会改变,它将始终是您给出的顺序。数字是每个字段的宽度,而不是从开始处偏移。使用“%20s%-20s”可能会导致两个字符串相互碰撞,因此您可以执行“%20s%-20s”以确保它们之间始终有一个空格。哦,好的,谢谢,现在我完全明白了。回答得好。人们还可以使用相同的技术生成一种通用的pad-to-length方法。请参阅示例。您需要另一个
%-20s
%-32s
或任何您想要的宽度。注意
-
假设您希望左对齐。没有它,字符串就像数字一样右对齐。顺序不会改变,它将始终是您给出的顺序。数字是每个字段的宽度,而不是从开始处偏移。使用“%20s%-20s”可能会导致两个字符串相互碰撞,因此您可以执行“%20s%-20s”以确保它们之间始终有一个空格。哦,好的,谢谢,现在我完全理解了。