【Java】小白友好的java IO操作学习笔记

慢就是快,让知识先沉淀一会。

目录

数据流

文件流

文件复制

缓冲流

字符流

序列化


在 Java 中,流是一种用于处理输入和输出的数据序列的抽象概念。Java 提供了丰富的流类和接口,用于处理不同类型的数据源和数据目标。

Java 中的流可以分为两种主要类型:字节流和字符流。

  1. 字节流:字节流以字节为单位进行读写操作,适用于处理二进制数据或字节流形式的文本数据。字节流类位于 java.io 包中,主要包括 InputStreamOutputStream 类及其子类,例如 FileInputStreamFileOutputStream 等。

  2. 字符流:字符流以字符为单位进行读写操作,适用于处理文本数据。字符流类位于 java.io 包中,主要包括 ReaderWriter 类及其子类,例如 FileReaderFileWriter 等。

这些流类提供了一组丰富的方法,用于从数据源中读取数据(输入流)或将数据写入到数据目标(输出流)。它们提供了高级的操作,如缓冲、字符编码转换等,以提高性能和灵活性。

数据流

数据流是一种特殊的流,它可以读写原始数据类型和字符串。Java 中提供了两个数据流类 DataInputStream 和 DataOutputStream,它们可以方便地读写基本数据类型和字符串。

示例:

// 写入数据
DataOutputStream outputStream = new DataOutputStream(new FileOutputStream("data.txt"));
outputStream.writeInt(10);
outputStream.writeDouble(3.14);
outputStream.writeUTF("Hello, World!");
outputStream.close();

// 读取数据
DataInputStream inputStream = new DataInputStream(new FileInputStream("data.txt"));
int i = inputStream.readInt();
double d = inputStream.readDouble();
String s = inputStream.readUTF();
inputStream.close();
System.out.println(i + " " + d + " " + s);

文件流

文件流是一种用于读写文件的流,Java 中提供了 FileInputStream 和 FileOutputStream 两个类,分别用于读取和写入文件。

示例:

// 写入数据
FileOutputStream outputStream = new FileOutputStream("data.txt");
String data = "Hello, World!";
outputStream.write(data.getBytes());
outputStream.close();

// 读取数据
FileInputStream inputStream = new FileInputStream("data.txt");
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String s = new String(buffer, 0, length);
inputStream.close();
System.out.println(s);

文件复制

文件复制是一种常见的操作,可以使用 Java I/O API 中的文件流来实现

示例:

FileInputStream inputStream = new FileInputStream("input.txt");
FileOutputStream outputStream = new FileOutputStream("output.txt");
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
    outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();

缓冲流

缓冲流是一种增强型的字节流和字符流,它可以提高 I/O 操作的效率。Java 中提供了 BufferedInputStream 和 BufferedOutputStream 两个类,分别用于缓冲读取和写入数据。

示例:

// 写入数据
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream("data.txt"));
String data = "Hello, World!";
outputStream.write(data.getBytes());
outputStream.close();

// 读取数据
BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("data.txt"));
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String s = new String(buffer, 0, length);
inputStream.close();
System.out.println(s);

字符流

字符流是一种用于读写字符的流,Java 中提供了 Reader 和 Writer 两个抽象类,分别用于读取和写入字符。

示例:

// 写入数据
FileWriter writer = new FileWriter("data.txt");
String data = "Hello, World!";
writer.write(data);
writer.close();

// 读取数据
FileReader reader = new FileReader("data.txt");
char[] buffer = new char[1024];
int length = reader.read(buffer);
String s = new String(buffer, 0, length);
reader.close();
System.out.println(s);

序列化

序列化是一种将对象转换为字节流的过程,Java 中提供了 ObjectInputStream 和 ObjectOutputStream 两个类,用于实现对象的序列化和反序列化。

示例:

// 序列化对象
Person person = new Person("Alice", 18);
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("data.txt"));
outputStream.writeObject(person);
outputStream.close();

// 反序列化对象
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("data.txt"));
Person p = (Person) inputStream.readObject();
inputStream.close();
System.out.println(p.getName() + " " + p.getAge());

你可能感兴趣的:(学习,笔记,java,IO,文件操作,序列化反序列化)