写入文本文件时格式化数据(Java)

时间:2015-09-23 03:04:09

标签: java formatting file-writing

public static void writer(ArrayList<String> a)
{
    FileWriter file  = new FileWriter("text1.txt");
    for(int i=0; i<a.size(); i++)
    {
        if(i%2==0)
        {
            file.write(a, i+2, 300);
        }
        else 
        {
            System.out.printf("a.get(i, i+1,300));
            System.out.println();
        }
    }
}

我正在尝试使用file.write方法将格式化文本写入.txt文件。我想使用类似于“System.out.printf”命令的格式化技术。我希望上面的程序与下面的程序做同样的事情,除了写入文本文件而不是控制台。有什么建议?文本(不同长度)必须在两个整齐的列中排列,每个列从同一点开始。我无法从String对象列表中更改输入的形式。我不熟悉BufferedOutputStream和几乎任何其他“写入文本文件”类,所以如果您的解决方案涉及到这一点,请比正常情况更彻底地解释一下。谢谢!

   public static void formatter(ArrayList<String> a)
{
    System.out.printf("%-15s", "Item:");
    System.out.printf("%1s", "Price:");
    System.out.println();
    for(int i=0; i<a.size(); i++)
    {
        if(i%2==0)
        {
            System.out.printf("%-15s",a.get(i));
        }
        else 
        {
            System.out.printf("$%1s",a.get(i));
            System.out.println();
        }
    }

1 个答案:

答案 0 :(得分:1)

printf方法在PrintStream类上,因此不使用新的FileWriter(&#34; test1.txt&#34;)尝试新的PrintStream(&#34; test1.txt&#34;),file.printf应该工作

发现自己的一种方法是查看你想要做的事情,比如System.out。您将发现它是一个PrintStream,因此请查看PrintStream javadocs以了解如何打开文件并返回PrintStream,PrintStream本身可以方便地为其提供构造函数。