Java I/O流详解:输入输出流的继承架构

需积分: 10 4 下载量 76 浏览量 更新于2024-08-18 收藏 2.75MB PPT 举报
"I/O流的继承关系架构是Java编程中的一个重要组成部分,它涉及到了Java对输入输出操作的系统化管理。在这个框架下,输入流和输出流被组织成层次分明的类体系,以支持不同类型的I/O操作。在本课件中,我们将深入探讨这些概念,以及它们在Java编程中的应用。 Java I/O流分为两大类:输入流(Input Stream)和输出流(Output Stream)。这两类流都有各自的基类,分别是InputStream和OutputStream。它们提供了处理字节流的基本方法,并为其他特定类型的流提供了一致的接口。 输入流的架构以InputStream为核心,它是所有字节输入流的抽象基类。这个类的子类包括: 1. SequenceInputStream:用于合并多个输入流。 2. PipedInputStream:用于在两个线程之间传递数据,通常与PipedOutputStream一起使用。 3. FilterInputStream:一个过滤流,用于添加额外的功能,例如压缩或加密。 4. FileInputStream:用于读取文件的数据。 5. ByteArrayInputStream:从内存中的字节数组读取数据。 6. ObjectInputStream:用于反序列化对象,从字节流中恢复Java对象。 7. DataInputStream:提供读取基本数据类型的方法。 8. PushbackInputStream:允许将已读取的字节回推到流中。 9. BufferedInputStream:通过缓存提高读取性能。 输出流的架构以OutputStream为基础,它是所有字节输出流的抽象基类。其子类包括: 1. PipedOutputStream:与PipedInputStream配合,用于线程间通信。 2. FilterOutputStream:类似FilterInputStream,用于添加输出流的额外功能。 3. FileOutputStream:写入文件的数据。 4. ByteArrayOutputStream:将数据写入内存的字节数组。 5. ObjectOutputStream:用于序列化对象,将Java对象写入字节流。 6. DataOutputStream:写入基本数据类型。 7. CheckedOutputStream:用于进行校验和计算。 8. BufferedOutputStream:增加缓冲以提高写入效率。 9. CipherOutputStream:用于加密输出流。 10. DeflaterOutputStream:用于压缩数据。 11. DigestOutputStream:计算数据的散列值,如MD5或SHA。 12. PrintStream:格式化输出,常用于打印日志和调试信息。 这个课件不仅涵盖了I/O流的继承架构,还涉及了Java的其他核心领域,如Java语法基础、面向对象编程、高级编程接口(包括图形GUI编程、多线程编程、I/O编程和网络编程),以及Java编程语言的基础知识,包括变量、表达式、控制流、数组、异常处理、图形用户界面的构建、多线程、流I/O和文件操作、网络编程等。这些内容构成了一个完整的Java学习路径,帮助学习者全面掌握Java编程技术。"

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/apache-hive-2.3.5/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/hadoop-3.3.1/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Exception in thread "main" java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap') at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:394) at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:370) at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:60) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:708) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.hadoop.util.RunJar.run(RunJar.java:323) at org.apache.hadoop.util.RunJar.main(RunJar.java:236)

354 浏览量