修复 Java 错误 java.io.IOException: Stream Closed
本篇文章我们将找出在 Java 编程中编码时产生 java.io.IOException: Stream Closed
错误的可能原因。 我们还将借助代码示例探索两种可能的解决方案来修复此错误。
导致 java.io.IOException:Stream closed 的原因
示例代码(导致错误):
//import libraries
import java.io.FileWriter;
import java.io.IOException;
//Test Class
public class Test{
//this method writes the given data into the specified file
//and closes the stream
static void writeToFile(String greetings,
String firstName,
String lastName,
FileWriter fileWriter) {
String customizedGreetings = greetings + "! "+
firstName + " " +
lastName;
try {
fileWriter.write(customizedGreetings + "\n");
fileWriter.flush();
fileWriter.close();
} catch (IOException exception) {
exception.printStackTrace();
}
}//end writeToFile() method
//main() method
public static void main(String[] args) throws IOException {
//creates a file in append mode and keeps it open
FileWriter fileWriter = new FileWriter("Files/file.txt", true);
//writeToFile() is called to write data into the file.txt
writeToFile("Hi", "Mehvish", "Ashiq", fileWriter);
writeToFile("Hello", "Tahir", "Raza", fileWriter);
}//end main()
}//end Test class
让我们通过代码来查找导致 java.io.IOException: Stream Closed 错误的原因。 然后,我们将跳转到它的解决方案。
此代码片段使用位于 java.io 包中的 FileWriter 类,用于将字符形式的数据写入指定文件。 如果给定位置不存在指定的文件,它将创建该文件并使其保持打开状态。
如果文件已经存在,则 FileWriter 将替换它。
在 main() 方法中,我们调用 FileWriter 构造函数以追加模式创建指定文件,然后调用 writeToFile() 方法两次将给定数据写入 file.txt 文件。
第一次调用时, writeToFile() 方法将数据写入 file.txt,刷新 FileWriter 的数据,然后关闭它。 请注意,我们已经通过调用 close() 方法关闭了流。
在第二次调用时,FileWriter 对象无法找到它应该写入的文件,因为流已关闭。 因此,第二次调用 writeToFile() 方法会导致此错误。
有两种解决方案可以修复此错误。 下面给出了它们和代码示例。
通过创建新流修复 java.io.IOException:Stream closed 错误
第一个解决方案是每当我们想要写入指定文件时,通过将 FileWriter 对象移动到 writeToFile() 函数中来创建一个新流。
示例代码:
//import libraries
import java.io.FileWriter;
import java.io.IOException;
//Test class
public class Test{
//this method writes the given data into the specified file
//and closes the stream
static void writeToFile(String greetings,
String firstName,
String lastName) throws IOException{
FileWriter fileWriter = new FileWriter("Files/file.txt", true);
String customizedGreetings = greetings + "! "+
firstName + " " +
lastName;
fileWriter.write(customizedGreetings + "\n");
fileWriter.flush();
fileWriter.close();
}//end writeToFile()
//main()
public static void main(String[] args){
//writeToFile() is called to write data into the file
try {
writeToFile("Hi", "Mehvish", "Ashiq");
writeToFile("Hello", "Tahir", "Raza");
}catch (IOException e){
e.printStackTrace();
}
}//end main()
}//end Test class
输出(file.txt 中的数据):
Hi! Mehvish Ashiq
Hello! Tahir Raza
通过将 close() 移动到 writeToFile() 之外来修复 java.io.IOException: Stream closeed 错误
第二种解决方案是将 close()
方法移到 writeToFile()
函数之外,与解决方案 1 相比,这似乎是一个好方法。
示例代码:
//import libraries
import java.io.FileWriter;
import java.io.IOException;
//Test Class
public class Test{
//this method writes the given data into the specified file
static void writeToFile(String greetings,
String firstName,
String lastName,
FileWriter fileWriter) {
String customizedGreetings = greetings + "! "+
firstName + " " +
lastName;
try {
fileWriter.write(customizedGreetings + "\n");
fileWriter.flush();
} catch (IOException exception) {
exception.printStackTrace();
}
}//end writeToFile()
//closes the stream
static void cleanUp(FileWriter fileWriter) throws IOException {
fileWriter.close();
}//end cleanUp()
//main()
public static void main(String[] args) throws IOException {
//create the file in the append mode and keep it open
FileWriter fileWriter = new FileWriter("Files/file.txt", true);
//writeToFile() is called to write data into the file.txt
writeToFile("Hi", "Mehvish", "Ashiq", fileWriter);
writeToFile("Hello", "Tahir", "Raza", fileWriter);
//close the stream
cleanUp(fileWriter);
}//end main()
}//end Test class
输出(file.txt 中的数据):
Hi! Mehvish Ashiq
Hello! Tahir Raza
相关文章
使用 Java 连接 FTPS 服务器
发布时间:2023/07/14 浏览次数:76 分类:Java
-
安全文件传输协议 (FTPS) 是文件传输协议 (FTP) 的安全版本,它使用 SSL/TLS 加密来保护客户端和服务器之间传输的数据。 本文将介绍如何使用 Java 安全通道 (JSSE) API 连接到 Java 中的 FTPS 服务器。
使用 Java 创建 X.509 证书
发布时间:2023/07/14 浏览次数:107 分类:Java
-
X.509 是一种广泛使用的公钥基础设施 (PKI) 标准,用于保护和验证互联网上的交易。本文将教我们如何使用 Java 创建 X.509 证书。
Java 中错误 Unsupported Major Minor Version
发布时间:2023/07/14 浏览次数:68 分类:Java
-
出现 Unsupported Major.minor version 错误或 Java.lang.UnsupportedClassVersionError 的原因是运行时 JDK 较低,编译时 JDK 较高。 本篇文章介绍如何解决Java中不支持的major.minor版本。
Java 错误 Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8
发布时间:2023/07/14 浏览次数:200 分类:Java
-
在使用IntelliJ for Java时,无法编译Java程序是一个常见的问题。 本教程提供了此错误的解决方案。Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8 错误
解决 Java 异常 Unable to Instantiate org.apache.hadoop.hive.ql.metadata.Sessi
发布时间:2023/07/14 浏览次数:183 分类:Java
-
本篇文章介绍如何解决 java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient。Apache Hive 是一款开源数据仓库软件,用于读取、管理和写入存储在 Hadoop 文件中的大
Java 中 Could Not Find Java SE Runtime Environment 错误
发布时间:2023/07/14 浏览次数:149 分类:Java
-
当安装了运行时环境时,即 Java 找不到主 java.dll 文件时,可能会出现“Could not find Java SE Runtime Environment”错误。 本篇文章介绍如何解决 Java 中的“Could not find Java SE Runtime Environment”错误。
Java 中错误 java.net.SocketException: Software Caused Connection Abort: Recv F
发布时间:2023/07/14 浏览次数:75 分类:Java
-
本篇文章介绍如何解决 Java 中的以下错误:java.net.SocketException: Software caused connection abort: recv failed SocketException 是 IOException 的子类,当我们尝试访问套接字时会发生 IOException。
解决 Java Lang Index Out of Bounds Exception 异常
发布时间:2023/07/14 浏览次数:62 分类:Java
-
本篇文章我们将讨论考虑数组和 ArrayList 的 IndexOutOfBoundsException 错误。 我们还将了解导致此错误的原因以及最后如何解决它。java.lang.IndexOutOfBoundsException 的原因
修复 Java 中无法打开 jvm.cfg 的问题
发布时间:2023/07/14 浏览次数:133 分类:Java
-
有时,我们认为一切都按预期进行,但有些问题却隐藏在幕后。 今天,我们将讨论类似的情况并确定可能的解决方案。Java 中的无法打开 jvm.cfg 错误 当我们将计算机更新到 Windows 10 但后来由于