Java IO:如何在写入一定数量的数字后转到下一行?

时间:2014-08-11 10:41:15

标签: java

嗨我想把一个数组写入一个文件,我可以做到这一点,除了我想在第一行写入数组的前50个对象然后移动到下一行并写下另外50个数字,然后是下一行,所以上。

目前我有这个:

if (pause.save) {
        Formatter f;
        FileWriter fw;
        PrintWriter pw = null;

        File f2 = new File("docs/save.txt");

        FileReader r;
        BufferedReader r1;
        try{


            //f = new Formatter("docs/save.txt");

            f2.createNewFile();

            fw = new FileWriter(f2);
            pw = new PrintWriter(fw);


            pw.println(mapwidth);
            pw.println(mapheight);

            for(int i = 0; i < overview.s.toArray().length; i ++){
                pw.println(overview.s.get(i).getID());
            }



        }catch(IOException e){
            e.printStackTrace();
            System.out.println("ERROR!!!");
        }finally{

            pw.close();
        }
    }

我多年来一直试图这样做,但无法弄明白。

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式执行此操作: -

for(int i = 0; i < overview.s.toArray().length; i ++){
      pw.println(overview.s.get(i).getID());
      if(i!=0&&i%50==0)
      //newline here
}

答案 1 :(得分:1)

只是做:

if (pause.save) {
        Formatter f;
        FileWriter fw;
        PrintWriter pw = null;

        File f2 = new File("docs/save.txt");

        FileReader r;
        BufferedReader r1;
        try{


            //f = new Formatter("docs/save.txt");

            f2.createNewFile();

            fw = new FileWriter(f2);
            pw = new PrintWriter(fw);


            pw.println(mapwidth);
            pw.println(mapheight);

            for(int i = 0; i < overview.s.toArray().length; i ++){
                pw.print(overview.s.get(i).getID());
                if ((i + 1) % 50 == 0) {
                    pw.println();
                }
            }



        }catch(IOException e){
            e.printStackTrace();
            System.out.println("ERROR!!!");
        }finally{

            pw.close();
        }
    }