Java 中的 StreamCorruptedException
在 Java 中,当从流中读取或写入数据时发现问题时,就会发生 StreamCorruptedException。问题可能是我们读取或写入的数据格式错误或包含错误。如果给定文件的格式不正确。当流意外关闭或数据被部分覆盖时。
在本文中,我们将通过示例讨论 StreamCorruptedException。但在继续之前,重要的是要了解流以及我们将在示例中使用的一些方法。
处理 StreamCorruptedException 的程序
流
流是在 Java 中执行输入和输出操作时使用的抽象。基本上,输入流用于从键盘、磁盘文件等来源获取输入。输出流指的是显示或写入数据的目的地。
类
FileReader − 用于读取字符。
FileWriter − 用于写入字符。
要使用这些类,我们需要定义它们的对象 −
语法
FileReader nameOfobject = new FileReader("nameOfFile"); FileWriter nameOfobject = new FileWriter("nameOfFile");
StreamCorruptedException − 它是 ObjectStreamException 的子类。它有两种使用方式,一种是不提供异常原因,另一种是用字符串类型的双引号括起来的原因。
语法
StreamCorruptedException(); 或者, StreamCorruptedException("value");
方法
read() − 它用于从给定源读取一个字节。
要使用 I/O 流,我们需要在 java 程序中导入以下包 −
import java.io.*;
'*' 表示我们正在导入此包中可用的所有类。 StreamCorruptedException 是 java.io 的一个类。
示例 1
在此示例中,我们将使用 StreamCorruptedException 类,但不给出异常原因。
import java.io.*; public class Streams { public static void main(String args[]) throws IOException { FileReader reading = null; FileWriter writing = null; try { reading = new FileReader("Stream.java"); writing = new FileWriter("stream"); int copy; while ((copy = reading.read()) != -1) { throw new StreamCorruptedException(); } } catch (StreamCorruptedException exp) { // 处理 StreamCorruptedException System.out.println(exp); } catch (Exception exp) { // 处理其他异常 System.out.println("Other exception found"); } } }
编译上述 java 文件:'javac Streams.java'
编译后,使用以下命令运行 java 文件:'java Streams'
输出
Other exception found
在上面的代码中,我们分别创建了 FileReader 和 FileWriter 类的两个实例'reading'和'writing',以对给定文件执行读写操作。在 try 块的 while 循环中,我们尝试读取文件'Stream.java'的内容。虽然我们创建了一个整型变量'copy'来存储该文件的内容,但我们没有给出复制位置的说明,这就是 StreamCorruptedException 抛出的原因。
示例 2
在此示例中,我们将使用 StreamCorruptedException 类来说明异常原因。
import java.io.*; public class Streams { public static void main(String args[]) throws IOException { FileReader reading = null; FileWriter writing = null; try { reading = new FileReader("Stream.java"); writing = new FileWriter("stream"); int copy; while ((copy = reading.read()) != -1) { throw new StreamCorruptedException("Please!! Provide a valid file type!"); } } catch (StreamCorruptedException exp) { // 处理 StreamCorruptedException System.out.println(exp); } catch (Exception exp) { // 处理其他异常 System.out.println("Other exception found"); } } }
输出
java.io.StreamCorruptedException: Please!! Provide a valid file type!
在上面的代码中,我们使用了示例 1 程序,但这次我们使用了一条抛出异常的消息,该消息显示了发生异常的原因。
结论
在 Java 中,我们使用 try 和 catch 块处理异常。异常发生在运行时而不是编译期间,这就是为什么正确处理它很重要,否则可能会给我们带来麻烦。在本文中,我们了解了如何处理 Java 中名为 StreamCorruptedException 的异常之一。