Java输出到文本文件?

时间:2015-05-19 05:01:43

标签: java

所以我在输出时遇到麻烦。我理解这个概念,但是当谈到这个问题时,它有点奇怪。我尝试过不同的打印行,所有打印行都从控制台窗口给出了不同的结果。我还在尝试不同的事情,但我开始没有想法了。谢谢,非常感谢!

这就是我想要的预期输出。

1
1, 2, 3, 4

当我尝试println时,它会对output.println(data [0]);

执行此操作
1
, 2, 3, 4

当我进行常规打印时,它会执行此操作

1, 2, 3, 4  

这是文本文件print method`

    public class JavaApplication1 {

  static int[] Array(int[] data) {

      int size = 1;
      if (data !=null) {
          size = 1 +data.length;
      }
      return new int [size];
  }

  private static int[] addToArray(int[] data, int x) {
      int[] array2 = Array(data);
      if(data !=null) {
          System.arraycopy(data,0,array2,0,data.length);
      }
      array2[array2.length - 1] = x;
      return array2;
  }
  private int[] data;

  public JavaApplication1 (int[] data, int x) {
      this.data = addToArray(data, x);      
  }
  public void printall() {
      System.out.print(data[0]);
      for (int i = 1; i < data.length; i++) {
          System.out.printf(", %d", data[i]);

      }
      System.out.println();
  } public void text() {
    try {
           PrintWriter output =  new PrintWriter("test.txt");
           output.print(data[0]);
           for (int i = 1; i < data.length; i++) {
               output.printf( ", %d", data[i]);
               output.flush();
           }
    } catch (Exception ex) {

    }


  }


    public static void main(String[] args) {
        int[] in = {1,2,3};
        int[] test = {1,2,3};

        int l = 4;
        int x = 4;

        JavaApplication1 a = new JavaApplication1(null, 1);
        a.printall();
        JavaApplication1 b = new JavaApplication1(in, x);
        b.printall();


        JavaApplication1 c = new JavaApplication1(null, 1);
        c.text();
        JavaApplication1 d = new JavaApplication1(test, l);
        d.text();




    }

}

5 个答案:

答案 0 :(得分:0)

试试这个:

PrintWriter output =  new PrintWriter("test.txt");
output.println(data[0]);      //this is where you call the println
for (int i = 0; i < data.length; i++) {
    output.printf( ", %d", data[i]);
    output.flush();
}

答案 1 :(得分:0)

尝试这样做

public void text() {
    try {
       PrintWriter output =  new PrintWriter("test.txt");

       for (int i = 0; i < data.length; i++) {
           if(i > 0){
               output.print(",");
           }

           output.print(data[i]);
           output.flush();     
       }   
    } catch (Exception ex) {
    }
}

答案 2 :(得分:0)

试试这个:

public void text() {
        try {
            PrintWriter output = new PrintWriter("test.txt");
            output.println(data[0]);
            for (int i = 0; i < data.length; i++) {
                if (i != (data.length - 1)) {
                    output.printf("%d, ", data[i]);
                } else {
                    output.printf("%d", data[i]);
                }
                output.flush();
            }
        } catch (Exception ex) {

        }

    }

答案 3 :(得分:0)

要为每个输出循环创建一个新行,并在您编写的每一行中添加“\ n”,或者您可以转换为字符串并将String格式编辑为您想要的任何内容。如果需要,可以添加逗号

string.format()

答案 4 :(得分:0)

问题原因:在您的代码中,每次拨打text()时,您都要替换现有文件,而不更新或向其添加新数据。

请参阅此SO question。您可以将printWriter写为

PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("test.txt", true)));

我已在本地测试过,请尝试使用此代码。

public void text() {
    try {
        // Adding data to existing file without replacing it.
        PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("test.txt", true)));
        output.print(data[0]);
        for (int i = 1; i < data.length; i++) {
            output.printf(", %d", data[i]);
        }
        output.print("\n"); // Added next line in the file
        output.flush();
        output.close(); // closing PrintWriter.
    } catch (Exception ex) {
        // log your exception.
    }
}
相关问题