Java IO流操作:文件输入输出与文件管理

需积分: 1 0 下载量 147 浏览量 更新于2024-09-11 收藏 20KB DOCX 举报
"Java基础IO流的操作,涵盖了文件的输入输出、File类的使用、文件的读取、复制、粘贴、序列化与反序列化以及二进制文件的读写。" 在Java编程中,I/O(Input/Output)流是处理数据传输的核心工具,用于读取和写入各种数据源,如文件、网络连接等。Java的基础IO流主要包括字节流(Byte Stream)和字符流(Character Stream),它们分为输入流(InputStream和Reader)和输出流(OutputStream和Writer)两大类。 文件操作是IO流的一个重要应用领域。`File`类是Java中的一个核心类,它提供了与文件和目录相关的操作。以下是一些关键的方法: 1. `exists()`:检查指定的路径是否对应一个存在的文件或目录。 2. `isFile()`:判断给定的路径是否为文件。 3. `isDirectory()`:判断给定的路径是否为目录。 4. `getName()`:获取文件或目录的名称。 5. `getPath()`:获取文件或目录的相对路径。 6. `getAbsolutePath()`:获取文件或目录的绝对路径。 7. `lastModified()`:返回文件或目录的最后修改时间。 8. `length()`:返回文件的大小,以字节为单位。 9. `createNewFile()`:尝试创建一个新的空文件。如果文件已存在,该方法将返回`false`,不会覆盖原有文件。 10. `listFiles()`:返回当前目录下的所有文件和子目录,结果为`File`对象数组。 要获取某个目录下所有文件和子目录的名称,可以按照以下步骤进行: 1. 创建`File`对象,指定目标目录,例如`File file = new File("D://123//");` 2. 使用`isFile()`方法判断是否为文件,如果是文件则打印相关信息,否则继续处理目录。 3. 调用`listFiles()`方法获取目录下的所有文件和子目录。 4. 遍历`File`数组,对每个元素执行`isDirectory()`判断,将文件和目录分别处理,记录文件名或路径到列表中。 下面是一个简单的示例代码: ```java import java.io.File; import java.util.ArrayList; import java.util.List; public class FileDemo { @SuppressWarnings({"rawtypes", "unchecked"}) public static void main(String[] args) { // 根据路径目录实例化一个对象 try { File file = new File("D://123//"); if (file.isFile()) { // 判断是否为文件 System.out.println("是文件"); } else { // 列出所有的文件及目录 File[] files = file.listFiles(); List<File> fileList = new ArrayList<>(); for (int i = 0; i < files.length; i++) { // 先列出目录 if (files[i].isDirectory()) { System.out.println("目录:" + files[i].getName()); } else { System.out.println("文件:" + files[i].getName()); } // 将文件存入fileList,此处可以根据需求进行具体操作 fileList.add(files[i]); } } } catch (Exception e) { e.printStackTrace(); } } } ``` 除了基本的文件操作,Java还支持序列化(Serialization)和反序列化(Deserialization)。序列化是将对象的状态转换为字节流的过程,以便于存储或在网络上传输。反序列化则是将字节流恢复为原来的对象状态。Java提供了`Serializable`接口来标记一个类可被序列化,`ObjectOutputStream`用于序列化,`ObjectInputStream`用于反序列化。 对于二进制文件的读写,Java的`FileInputStream`和`FileOutputStream`是最基础的工具。它们可以用于读写图像、音频、视频等非文本数据。例如,使用`FileInputStream`读取二进制文件,`FileOutputStream`写入二进制数据。 Java的基础IO流提供了丰富的功能,可以满足各种文件操作需求,包括读取、写入、复制、粘贴,以及处理二进制数据和对象状态的序列化与反序列化。通过熟练掌握这些知识点,开发者能够高效地处理各种数据输入输出场景。