### 文档JAVA-IO流 #### 一、IO流概述 1. **什么是IO** - I代表**输入**(input),O代表**输出**(output)。在Java中,所有负责输入输出的类都位于`java.io`包内。这些类主要用于进行数据的输入输出操作。 2. **流的分类** - 按照数据流向可分为: - **输入流**:从源读取数据。 - **输出流**:向目的地写入数据。 - 按照处理的数据类型可以分为: - **字节流**:处理字节数据,如图片、音频等。 - **字符流**:处理字符数据,主要用于文本处理。 3. **四个常用的父类** - `InputStream`: 所有字节输入流的超类。 - `OutputStream`: 所有字节输出流的超类。 - `Reader`: 所有字符输入流的超类。 - `Writer`: 所有字符输出流的超类。 4. **字符流的特点** - 当处理字符数据时,使用字符流更加方便。例如读取文本文件时,字符流可以直接处理字符,而字节流则需要额外转换。 5. **使用IO流的基本步骤** - **导入包**:确保导入了`java.io`包。 - **处理异常**:通常情况下,使用IO流的操作都需要处理可能出现的异常,如`IOException`。 - **释放资源**:完成数据读写后,需要关闭流以释放相关资源。 6. **目录分隔符** - Java提供了`java.io.File.separator`作为跨平台的目录分隔符。这个字段根据不同的操作系统返回不同的字符串值,如Windows下为`\`,Unix或Linux下为`/`。使用`File.separator`可以使得代码更具有可移植性。 #### 二、流操作的规律 1. **明确源和目的** - 源:输入流(如`InputStream`, `Reader`)。 - 目的:输出流(如`OutputStream`, `Writer`)。 - 注意:在使用键盘输入时,回车(`\r\n`)作为结束标志非常重要,这是因为读取操作如果没有遇到回车会一直阻塞等待更多输入。 2. **确定是否为纯文本数据** - 如果是纯文本数据,则选择字符流(如`FileReader`, `FileWriter`)。 - 如果不是纯文本数据,则选择字节流(如`FileInputStream`, `FileOutputStream`)。 3. **选择具体的对象** - 根据源和目的设备选择合适的流对象。例如: - **源设备**:内存、硬盘、键盘等。 - **目的设备**:内存、硬盘、控制台等。 #### 三、打印输出系统信息 - 使用`Properties prop = System.getProperties();`获取当前JVM运行时的信息,并将其输出到指定文件,如: ```java Properties prop = System.getProperties(); prop.list(new PrintStream("sysinfo.txt")); ``` #### 四、FileReader/FileWriter/BufferedReader/BufferedWriter的用法 1. **File类** - `File`类用于封装文件或文件夹的信息。 - 若要读取文件的内容,则需使用其子类`FileReader`(字符输入流)。 - 若要向文件写入内容,则需使用其子类`FileWriter`(字符输出流)。 2. **FileReader的用法** - 创建一个`FileReader`对象并指定文件路径。 - 使用`read()`方法逐字符读取文件。 - 使用`close()`方法关闭流。 示例代码: ```java FileReader fr = new FileReader("text.txt"); int c; while ((c = fr.read()) != -1) { System.out.print((char) c); } fr.close(); ``` 3. **FileWriter的用法** - 创建一个`FileWriter`对象并指定文件路径。 - 使用`write()`方法写入字符或字符串。 - 使用`close()`方法关闭流。 示例代码: ```java FileWriter fw = new FileWriter("write.txt", true); // true表示追加模式 fw.write(97); // 写入字符'a' fw.close(); ``` 4. **文件复制** - 可以使用`FileReader`和`FileWriter`来实现简单的文件复制。 - 更高效的方法是使用`BufferedReader`和`BufferedWriter`,它们可以在内部缓存多个字符,从而减少磁盘I/O次数。 5. **BufferedReader/BufferedWriter的使用** - `BufferedReader`和`BufferedWriter`通过内置的缓冲机制提高了读写效率。 - 示例代码: ```java BufferedReader br = new BufferedReader(new FileReader("source.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("destination.txt")); String line; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); bw.flush(); } br.close(); bw.close(); ``` 通过上述知识点的学习,我们可以更好地理解和应用Java中的IO流技术,尤其是在处理文件读写以及文本处理方面。
剩余12页未读,继续阅读
- 粉丝: 0
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言的操作系统实验项目.zip
- (源码)基于C++的分布式设备配置文件管理系统.zip
- (源码)基于ESP8266和Arduino的HomeMatic水表读数系统.zip
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip