Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法正确关闭文本文件_Java_File_File Io - Fatal编程技术网

Java 无法正确关闭文本文件

Java 无法正确关闭文本文件,java,file,file-io,Java,File,File Io,我有一段代码,它将数组元素复制到一个文本文件中,复制文件后,我有一个按钮打开我复制的文件 try { print = new PrintWriter("C:\\Users\\Jofrank\\workspace\\Java\\src\\payroll\\report.txt"); print.println("EMPLOYEES PAYROLL RECORD AS OF "+dateFormat.format(date));

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

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();
    }
试试看
{           
print=新的PrintWriter(“C:\\Users\\Jofrank\\workspace\\Java\\src\\payroll\\report.txt”);
print.println(“截至”+dateFormat.format(日期))的员工工资单记录);
print.println();

对于(intx=0;x,这在很大程度上取决于系统。 flush()通常应该可以工作,但这并不是全部。 还有一些嵌入式闪存文件系统,您也可以在其中调用sync


但对于第一种方法,请尝试在很大程度上依赖于系统的
flush()。
flush()通常应该可以工作,但这并不是全部。
还有一些嵌入式闪存文件系统,您也可以在其中调用sync

但对于第一种方法,请尝试使用flush()
,您实际上可以创建一个:

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

autoFlush-布尔值;如果为true,则为println、printf或格式
方法将刷新输出缓冲区

实际上,您可以创建一个:

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

autoFlush-布尔值;如果为true,则为println、printf或格式
方法将刷新输出缓冲区


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

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

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

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

PrintWriter(File file)

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

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

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

PrintWriter(File file)

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

flush()
flush()
。我认为,
PrintWriter
不会自动刷新。
BufferedWriter
应该在写入X个字节之后。
close()
应该,我认为,
flush()
。您可以刷新().close()自动刷新。为什么不想关闭写入程序?一旦完成,就应该关闭写入程序。大多数都有自动刷新功能。我使用
print.close()
关闭写入程序,对吗?我使用了
flush()
但它仍然不工作…
flush()
flush())
。我不认为
PrintWriter
会自动刷新。
BufferedWriter
应该在写入X个字节后进行。
close()
应该,我认为,
flush()
。您可以flush().close()自动刷新。为什么不想关闭写入程序?完成后应立即关闭写入程序。大多数都有自动刷新功能。我使用
print.close()
关闭写入程序,对吗?我使用了
flush()
但它仍然不起作用…自动刷新的
布尔值的构造函数只有
Writer
OutputStream
类,没有
字符串的构造函数。JonathanDrapeau:谢谢,这是一个愚蠢的复制/粘贴错误。我更正了它。这不是很像
缓冲Writer
?@SnakeDoc:大致上是这样的,但是
BufferedWriter
不提供
println
etc方法。自动刷新的
boolean
构造函数只有
Writer
OutputStream
类,没有一个带有
字符串的构造函数。JonathanDrapeau:谢谢,这是愚蠢的复制/粘贴错误。我已经更正了。这不是吗非常类似于
BufferedWriter
?@SnakeDoc:大致如此,但
BufferedWriter
不提供
println
等方法。