Java IO流:读写文件的基础操作
发布时间: 2024-02-12 07:13:04 阅读量: 14 订阅数: 12
# 1. Java IO流简介
## 1.1 IO流的概念
IO即Input/Output,是指输入和输出。在Java中,IO流用于处理设备之间的数据传输。输入流用于从设备读取数据,输出流用于向设备写入数据。
## 1.2 IO流的分类
IO流可以根据数据流向分为输入流和输出流,根据处理数据类型分为字节流和字符流。
- 输入流:用于从外部读取数据的流,如InputStream、Reader等。
- 输出流:用于向外部写入数据的流,如OutputStream、Writer等。
- 字节流:以字节为单位进行数据操作的流,如InputStream、OutputStream。
- 字符流:以字符为单位进行数据操作的流,如Reader、Writer。
## 1.3 IO流的基本原理
IO流通过将数据封装成流的形式进行传输,数据源可以是文件、网络连接、内存等。在流中,数据按照FIFO(先进先出)的顺序传输,读取和写入的操作分别对应读取和写入流的操作。
# 2. 文件读取操作
在Java中,我们可以使用IO流来进行文件的读取操作。文件读取的过程是将文件中的数据读取到程序中进行处理的过程。下面将介绍几种常用的文件读取操作方法。
#### 2.1 使用InputStream读取文件
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileInputStreamExample {
public static void main(String[] args) {
File file = new File("test.txt");
try (InputStream inputStream = new FileInputStream(file)) {
int data;
while ((data = inputStream.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
代码解析:
- 首先创建一个File对象,指定要读取的文件路径。
- 然后创建一个FileInputStream对象,并将File对象传入其中。
- 使用InputStream的`read()`方法读取文件内容,每次读取一个字节,并将其转换成字符输出。
- 当读取到文件末尾时,`read()`方法会返回-1,循环结束。
#### 2.2 使用BufferedInputStream提高读取效率
```java
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class BufferedInputStreamExample {
public static void main(String[] args) {
File file = new File("test.txt");
try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, bytesRead));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
代码解析:
- 首先创建一个File对象,指定要读取的文件路径。
- 接着创建一个FileInputStream对象,并将File对象传入其中。
- 再将FileInputStream对象传入BufferedInputStream的构造函数中,创建一个BufferedInputStream对象。
- 使用BufferedInputStream的`read(byte[] buffer)`方法读取文件内容,每次读取一定长度的字节,并将其转换成字符串输出。
- 当读取到文件末尾时,`read()`方法会返回-1,循环结束。
#### 2.3 使用FileReader和BufferedReader读取文本文件
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
File file = new File("test.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
代码解析:
- 首先创建一个File对象,指定要读取的文件路径。
- 接着创建一个FileReader对象,并将File对象传入其中。
- 再将FileReader对象传入BufferedReader的构造函数中,创建一个BufferedReader对象。
- 使用BufferedReader的`readLine()`方法逐行读取文件内容,并将每行内容输出。
- 当读取到文件末尾时,`readLine()`方法会返回null,循环结束。
#### 2.4 使用Scanner读取文件内容
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
File file = new File("test.txt");
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
代码解析:
- 首先创建一个File对象,指定要读取的文件路径。
- 接着创建一个Scanner对象,并将File对象传入其中。
- 使用Scanner的`hasNextLine()`方法判断文件是否还有下一行内容。
- 使用Scanner的`nextLine()`方法读取文件的下一行内容,并将其输出。
- 当读取到文件末尾时,`hasNextLine()`方法返回false,循环结束。
以上是几种常用的文件读取操作方法,根据不同的需求,可以选择使用合适的方法来读取文件内容。
# 3. 文件写入操作
文件写入操作是IO流操作中的重要部分,可以通过不同的方式将数据写入到文件中。下面将介绍几种常见的文件写入操作及其使用方法。
#### 3.1 使用OutputStream写入文件
在Java中,可以使用OutputStream来写入文件,这是一种字节流写入方式。下面是一个简单的示例:
```java
public class WriteFileWithOutputStream {
public static void main(String[] args) {
String content = "Hello, this is a sample content to be written into the file.";
try (OutputStream outputStream = new FileOutputStream("output.txt")) {
byte[] bytes = content.getBytes();
outputStream.write(bytes);
System.out.println("Data ha
```
0
0