迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 异常 Java.IO.Ioexception

作者:迹忆客 最近更新:2023/07/12 浏览次数:

本篇文章介绍了 Java 中的 java.io.ioException


Java 中的 java.io.IOException

IOException是Java中最常见的异常。 此异常的最常见原因是:

  1. 正在读取文件,但该文件不存在。
  2. 正在读取文件但没有权限。
  3. 正在写入文件,但磁盘空间不可用。
  4. 读取流时,但该流被其他进程关闭。
  5. 读取网络文件时,但该网络已断开。

Java.IO.IOException 提供系统输入和输出数据流以及序列化的异常。

Java中IO异常的原因还有很多。 下表显示了 Java 中异常的类型或子类:

接口 说明
InvalidClassException 当序列化运行时检测到无效类时会发生这种情况。
InvalidObjectException 这表明序列化对象未通过验证。
NotActiveException 这表明序列化或反序列化未激活。
NotSerializedException 这表明实例需要具有可序列化接口。
ObjectStreamException 这指示所有对象流类的超类。
CharConversionException 用于字符转换异常。
EOFException 这表明在输入时,已到达流的文件末尾。
FileNotFoundException 这表明您尝试访问的文件不存在。
InterruptedIOException 这表示输入输出操作已中断。
OptionalDataException 这表示由于未读取的原始数据或属于流的可序列化对象的数据结尾而导致对象读取失败。
StreamCorruptedException 这表明从对象流读取的控制信息违反了内部一致性检查。
SyncFailedException 这表明同步操作失败。
UnsupportedEncodingException 这表明不支持给定的字符编码。
UTFDataFormatException 这表明在输入流中读取了格式错误的 UTF-8 数据,或者该数据由任何实现数据输入接口的类读取。
WriteAbortedException 这表明在写入操作期间抛出了 ObjectStreamException。

以上异常是主IO异常的子类类型。 让我们尝试一个在 Java 中抛出 IOException 的示例:

package jiyik;

import java.io.FileInputStream;
import java.io.IOException;

public class Example{
    public static void main(String[] args) throws Exception {
        FileInputStream File_Input_Stream = new FileInputStream("Demofile.txt");
        System.out.println("Check if the file is there. ");

    }

}

上面的代码将抛出 IO FileNotFoundException,因为我们正在访问的文件不存在。 查看输出:

Exception in thread "main" java.io.FileNotFoundException: Demofile.txt (The system cannot find the file specified)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
    at jiyik.Example.main(Example.java:8)

为了处理这些异常,我们使用 try-catch 块来阻止 JVM 使代码崩溃。 查看解决方案:

package jiyik;

import java.io.FileInputStream;
import java.io.IOException;

public class Example{
    public static void main(String[] args) throws Exception {
        try {
            FileInputStream File_Input_Stream = new FileInputStream("Demofile.txt");
            System.out.println("Check if the file is there. ");
            } catch (IOException e) {
            //e.printStackTrace(); or
            System.out.println(e.getMessage());
        }

    }

}

现在上面的代码将打印相同的错误信息,但不会使代码崩溃。 查看输出:

Demofile.txt (The system cannot find the file specified)

让我们尝试另一个在 Java 中抛出文件结束异常 (EOFException) 的示例:

package jiyik;

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Example {
    public void DemoCheck() {
        File file = new File("delftstack.txt");
        DataInputStream Data_Input_Stream =  null;
        try{
            Data_Input_Stream = new DataInputStream(new FileInputStream(file));
            while(true){
                Data_Input_Stream.readInt();
            }
        }
        catch (EOFException E_O_F_Exception) {
            E_O_F_Exception.printStackTrace();
        }
        catch (IOException I_O_Exception) {
            I_O_Exception.printStackTrace();
        }
        finally{
            try{
                if (Data_Input_Stream != null)
                {
                    Data_Input_Stream.close();
                }
            }
            catch (IOException I_O_Exception){
                I_O_Exception.printStackTrace();
            }
        }
    }
    public static void main(String[] args){
        Example DemoExample = new Example();
        DemoExample.DemoCheck();
    }
}

该代码抛出 EOFException,因为它正在尝试读取文件,并且文件末尾已到达。 查看输出:

java.io.EOFException
    at java.base/java.io.DataInputStream.readInt(DataInputStream.java:398)
    at jiyik.Example.DemoCheck(Example.java:16)
    at jiyik.Example.main(Example.java:39)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:https://www.jiyik.com/tm/xwzj/prolan_7016.html

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便