Java文件操作与InputStream详解

需积分: 18 2 下载量 19 浏览量 更新于2024-07-13 收藏 2.41MB PPT 举报
"本文主要介绍Java中的InputStream抽象类及其相关概念,同时涵盖File类的使用和文件操作。" 在Java的I/O流体系中,`InputStream`是一个非常重要的抽象类,它是所有字节输入流的基类,用于从各种数据源读取字节数据。这些数据源可以是文件、管道、内存缓冲区、音频数据、字符串等。`InputStream`及其子类提供了读取单个字节、多个字节或整个数据块的方法,是Java进行输入操作的基础。 1. `InputStream`的子类: - `PipedInputStream`:用于两个线程之间的数据传输。 - `ByteArrayInputStream`:从字节数组中读取数据。 - `AudioInputStream`:处理音频数据。 - `StringBufferInputStream`:已过时,不推荐使用,用于从`StringBuffer`读取数据。 - `FileInputStream`:从文件系统中的文件读取数据。 - `SequenceInputStream`:合并多个输入流为一个连续的输入流。 - `ObjectInputStream`:用于反序列化对象,从字节流中恢复对象状态。 - `FilterInputStream`:作为装饰器模式的一部分,提供对输入流的基本操作增强。 - `InputStream`:抽象类本身,定义了输入流的基本操作。 - `BufferedInputStream`:提供缓冲功能,提高读取效率。 2. `File`类: - `File`类是Java中用于表示文件和目录的类,它位于`java.io`包下。`File`对象可以表示磁盘上的文件或目录,并提供了丰富的操作方法。 - 常用构造方法:通过路径字符串创建`File`对象,例如`new File(String pathname)`。 - 属性:包括路径分隔符、读写权限、是否存在、文件类型、是否隐藏、最后修改时间等。 - 常用方法:`canRead()`、`canWrite()`、`exists()`、`length()`、`isDirectory()`、`isFile()`、`isHidden()`、`lastModified()`、`getName()`、`getPath()`、`getParent()`、`getAbsolutePath()`等,用于检查和获取文件相关信息。 - 文件操作:`createNewFile()`用于创建新文件,`mkdir()`和`mkdirs()`创建目录,`delete()`删除文件或目录(需为空),`renameTo(File dest)`重命名或移动文件。 3. 文件操作示例: - 给定一个字符串数组,包含多个文件路径,可以遍历数组,比较文件名、大小和最后修改时间来找出重复的文件,并打印其绝对路径。这涉及到`File`类的多个方法,如`getName()`、`length()`和`lastModified()`。 总结,`InputStream`抽象类是Java I/O系统的核心,它为处理各种不同来源的数据输入提供了统一的接口。`File`类则是操作文件和目录的关键工具,提供了丰富的功能来创建、读取、修改和删除文件。理解这两个类及其方法对于进行Java的文件处理至关重要。