0

我有这段代码,可以将数组元素复制到文本文件中,复制文件后,我有一个按钮,可以打开我复制的文件。

try 
    {           
        print = new PrintWriter("C:\\Users\\Jofrank\\workspace\\Java\\src\\payroll\\report.txt");
        print.println("EMPLOYEES PAYROLL RECORD AS OF "+dateFormat.format(date));
        print.println();

        for(int x=0;x<department.length;x++)
        {
            print.println("DEPARTMENT: "+department[x].toUpperCase());
            print.println("\tPAYROLL PERIOD\tEMPLOYEE NUMBER\tNAME\tPAY RATE\tHOURS WORKED\tSALARY");
            print.println();

            for(int y=0;y<trans.length;y++)
            {
                if(trans[y] == null)
                {
                    continue;
                }
                if(trans[y].getDepartment().equals(department[x]))
                {
                    print.println("\t"+trans[y].getPayrollPeriod()+"\t"+trans[y].getEmpNo()+"\t\t"+trans[y].getName()+"\t"+trans[y].getPayRate()+"\t\t"+trans[y].getHoursWorked()+"\t\t"+String.format("%,.2f", (trans[y].getPayRate()*trans[y].getHoursWorked())));
                    total+=(trans[y].getPayRate()*trans[y].getHoursWorked());
                }
            }
            print.println("\t\t\t\t\t\t\t\t\tTOTAL:\t"+String.format("%,.2f", total));
            print.println();
            total=0;
        }

        print.close();
    } 
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }

不幸的是,除非我关闭系统,否则我的文本文件没有更新。

有没有办法在不关闭系统的情况下自动更新我的文本文件?

4

4 回答 4

3

您实际上可以创建一个PrintWriter with autoFlush turned on

print = new PrintWriter(new FileOutputStream
   ("C:\\Users\\Jofrank\\workspace\\Java\\src\\payroll\\report.txt"), true);

这里的第二个参数是true。根据 Javadoc:

autoFlush - A boolean; if true, the println, printf, or format methods will flush the output buffer

于 2013-10-02T17:19:30.150 回答
0

在文档中据说 PrintWriter 不会自动刷新行。

您可能需要为 PrintWriter 使用不同的构造函数:

PrintWriter(File file)

但是您必须打开文件本身,然后在写入完成后将其关闭。

于 2013-10-02T17:20:03.153 回答
0

这在很大程度上取决于系统。flush() 通常应该可以工作,但这并不是保证。有一些嵌入式闪存文件系统,您也可以在其中调用同步。

但是对于第一个方法尝试flush()

于 2013-10-02T17:19:23.753 回答
0

您需要清空流才能将其写入文件。正如其他人所建议的那样,使用.flush()来完成此操作而无需.close()您的流。否则,我相信会.close()自动要求.flush()您确保您的流已被清空,并且其内容已写入磁盘或您引导它的任何位置。

于 2013-10-02T17:19:37.873 回答