JavaSE教程
Java基础
Java简介
搭建Java开发环境
第一个Java程序
数据类型和变量
运算符和表达式
控制流程语句
数组和字符串
Java方法和方法调用
Java面向对象编程
Java类和对象
Java继承
Java封装
Java多态
Java异常处理
Java集合框架
Java高级特性
Java泛型
Java注解
Java文件I/O和NIO
Java多线程编程
Java网络编程
Java图形用户界面
Java应用开发
Java数据库连接(JDBC)
Java Web应用
-
+
首页
Java文件I/O和NIO
### 文件操作 Java文件I/O(输入/输出)提供了一系列的类和接口,用于从文件读取数据和向文件写入数据。主要涉及`java.io`包中的类。 **常用文件I/O类**: - `File`:表示文件和目录路径名的抽象表示形式。 - `FileReader`和`FileWriter`:用于读取字符文件和写入字符文件。 - `BufferedReader`和`BufferedWriter`:提供缓冲的字符流。 - `FileInputStream`和`FileOutputStream`:用于读取和写入原始字节。 **示例代码**:使用`BufferedReader`和`BufferedWriter`读写文件 ```java // 写入文件 try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) { writer.write("Hello, World!"); } catch (IOException e) { e.printStackTrace(); } // 读取文件 try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } ``` ### 序列化和反序列化 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。反序列化是将序列化的对象状态转换回对象的过程。 **实现序列化**: 要使一个类可以被序列化,需要实现`Serializable`接口。 ```java import java.io.*; public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; // 构造方法、getter和setter省略 } // 序列化对象 try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.obj"))) { out.writeObject(new Person("Kimi", 25)); } catch (IOException e) { e.printStackTrace(); } // 反序列化对象 try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.obj"))) { Person person = (Person) in.readObject(); System.out.println(person.getName()); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } ``` ### NIO基础 Java NIO(New Input/Output)是在Java 1.4中引入的一个新的I/O API,提供了与标准I/O不同的I/O接口。NIO提供了更加灵活和高效的I/O操作,特别是在处理大数据时。 **NIO的核心组件**: - `Channel`:类似于流,但可以在读写时更有效率。 - `Buffer`:数据容器,用于与通道进行交互。 - `Selector`:允许单个线程处理多个Channel。 **示例代码**:使用NIO读取文件 ```java Path path = Paths.get("example.txt"); try (BufferedReader reader = Files.newBufferedReader(path)) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } ``` NIO相比于传统的I/O,提供了非阻塞I/O操作和更高效的数据处理能力,特别是在网络编程和文件处理方面。通过使用缓冲区和通道,NIO可以提供更好的性能和更复杂的I/O操作。
wwbang
2024年12月25日 16:45
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码