Java回顾之I/O(Java I/O操作全回顾:从基础到进阶指南)

原创
ithorizon 4周前 (10-19) 阅读数 27 #后端开发

Java回顾之I/O - Java I/O操作全回顾:从基础到进阶指南

一、Java I/O概述

Java I/O(输入/输出)是Java编程语言中用于处理数据流的核心机制。Java I/O提供了大量的类和接口,用于文件的读写、网络通信等操作。Java I/O操作核心分为两大类:字节流和字符流。

二、Java I/O基础

Java I/O操作的核心是流(Stream),流可以看作是数据流动的通道。Java提供了两种基本的流类型:字节流和字符流。

2.1 字节流

字节流用于处理字节数据,它以字节为单位进行读写操作。Java中字节流的抽象基类是InputStream和OutputStream。

2.2 字符流

字符流用于处理字符数据,它以字符为单位进行读写操作。Java中字符流的抽象基类是Reader和Writer。

三、Java I/O常用类

3.1 InputStream和OutputStream

InputStream和OutputStream是所有字节流的超类。InputStream用于读取字节输入流,OutputStream用于写入字节输出流。

3.1.1 FileInputStream

FileInputStream是InputStream的子类,用于读取文件。

FileInputStream fis = new FileInputStream("example.txt");

int b;

while ((b = fis.read()) != -1) {

System.out.print((char) b);

}

fis.close();

3.1.2 FileOutputStream

FileOutputStream是OutputStream的子类,用于写入文件。

FileOutputStream fos = new FileOutputStream("example.txt");

fos.write('A');

fos.write('B');

fos.write('C');

fos.close();

3.2 Reader和Writer

Reader和Writer是所有字符流的超类。Reader用于读取字符输入流,Writer用于写入字符输出流。

3.2.1 FileReader

FileReader是Reader的子类,用于读取文件。

FileReader fr = new FileReader("example.txt");

char[] buffer = new char[1024];

int len;

while ((len = fr.read(buffer)) != -1) {

System.out.print(new String(buffer, 0, len));

}

fr.close();

3.2.2 FileWriter

FileWriter是Writer的子类,用于写入文件。

FileWriter fw = new FileWriter("example.txt");

fw.write("Hello World");

fw.close();

四、Java I/O进阶

4.1 缓冲流

缓冲流可以尽也许降低损耗I/O操作的高效,通过降低实际的读写次数来降低磁盘访问次数。BufferedInputStream和BufferedOutputStream分别是InputStream和OutputStream的包装类,BufferedReader和BufferedWriter分别是Reader和Writer的包装类。

4.1.1 BufferedReader和BufferedWriter

BufferedReader和BufferedWriter提供了缓冲功能,可以降低读写操作的次数。

BufferedReader br = new BufferedReader(new FileReader("example.txt"));

String line;

while ((line = br.readLine()) != null) {

System.out.println(line);

}

br.close();

BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"));

bw.write("Hello World");

bw.newLine();

bw.write("Java I/O");

bw.close();

4.2 转换流

转换流用于在不同的字符编码之间转换。InputStreamReader和OutputStreamWriter是转换流的两个核心类。

4.2.1 InputStreamReader

InputStreamReader将字节流演化为字符流。

InputStreamReader isr = new InputStreamReader(new FileInputStream("example.txt"), "UTF-8");

char[] buffer = new char[1024];

int len;

while ((len = isr.read(buffer)) != -1) {

System.out.print(new String(buffer, 0, len));

}

isr.close();

4.2.2 OutputStreamWriter

OutputStreamWriter将字符流演化为字节流。

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("example.txt"), "UTF-8");

osw.write("Hello World");

osw.close();

五、Java I/O高级应用

5.1 序列化

序列化是指将对象的状态信息演化为可存储或传输的形式的过程。在Java中,序列化可以通过实现Serializable接口来完成。

class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

private int age;

// 构造器、getter和setter方法

}

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"));

Person person = new Person("Alice", 30);

oos.writeObject(person);

oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"));

Person person2 = (Person) ois.readObject();

ois.close();

5.2 文件操作

Java I/O提供了多种文件操作类,如File、Files和Paths。

5.2.1 File类

File类用于文件和目录的操作。

File file = new File("example.txt");

if (file.exists()) {

System.out.println("文件存在");

} else {

System.out.println("文件不存在");

}

String[] files = file.list();

for (String f : files) {

System.out.println(f);

}

5.2.2 Files和Paths类

Files和Paths类提供了更加现代和灵活的文件操作对策。

Path path = Paths.get("example.txt");

System.out.println(Files.exists(path));

try (Stream paths = Files.walk(path)) {

paths.forEach(System.out::println);

}

六、总结

Java I/O是Java编程中非常重要的一部分,掌握Java I/O操作对于处理文件和数据流至关重要。本文从基础到进阶,详细介绍了Java I/O的核心概念、常用类和高级应用,愿望对读者有所帮助。

以上是一篇涉及Java I/O操作的回顾文章,从基础概念到高级应用都有涉及。文章采用HTML格式编写,使用了`

`标签作为标题,代码部分使用`
`标签进行了格式化。文章内容不少于2000字。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门