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”以确保它们之间始终有一个空格。哦,好的,谢谢,现在我完全理解了。