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

时间:2013-04-11 13:13:12

标签: 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 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 个答案:

答案 0 :(得分:3)

你可以做到

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

您可以使用PrintWriter来使用同时执行这两种操作的printf()。

e.g。使用PrintWriter

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

答案 1 :(得分:1)

  

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

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

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

答案 2 :(得分:1)

试试这个

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

答案 3 :(得分:1)

使用Google Guava

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

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