Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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_Outputstream_File Descriptor - Fatal编程技术网

Java 如何保持文件输出流的打开状态

Java 如何保持文件输出流的打开状态,java,file,outputstream,file-descriptor,Java,File,Outputstream,File Descriptor,我没有找到解决我问题的办法。但我有一个简单的例子- 我有很多线程,每个线程都在向文件中写入字符串。 任何写入相同文件的线程。 我只需要在所有线程结束后关闭所有文件。 但问题是——我需要在线程执行期间打开所有文件,只有在所有线程结束后才关闭所有文件。但是,当我在所有线程完成后使用文件描述符时,所有描述符都无效。我认为,如果我刷新输出流,而不是使用close方法-一切正常,但可能我错了: FileOutputStream fileOutputStream = new FileOutputStream

我没有找到解决我问题的办法。但我有一个简单的例子-

我有很多线程,每个线程都在向文件中写入字符串。 任何写入相同文件的线程。 我只需要在所有线程结束后关闭所有文件。 但问题是——我需要在线程执行期间打开所有文件,只有在所有线程结束后才关闭所有文件。但是,当我在所有线程完成后使用文件描述符时,所有描述符都无效。我认为,如果我刷新输出流,而不是使用close方法-一切正常,但可能我错了:

FileOutputStream fileOutputStream = new FileOutputStream(url, true);
fileDescriptor = fileOutputStream.getFD();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream, "UTF-8"));
writer = new PrintWriter(bufferedWriter);
...
writer.flush;

但主要的问题是——实际上是——在线程结束后,所有输出流关闭的是什么?如果是,如何在线程之间保持打开的文件?

因此,您在每个线程中实例化一个流而不同步写入?请查看同步,打开一次文件,然后通过同步块访问它