首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java io的应用场景举例

前面大家也看到了,java io包中的类非常多,各种各样的字节流和字符流,看得眼花缭乱,用到的时候难免手忙脚乱,不知道用哪个。

现在就找一些常见的应用场景熟悉一下。

1. 文件操作

Java IO 提供了强大的文件读写操作功能,可以用于文件的创建、读取、写入、删除等操作。

读取文件: 使用 FileReader, BufferedReader 等类读取文本文件。

写入文件: 使用 FileWriter, BufferedWriter 等类写入文本文件。

文件复制: 使用 FileInputStream 和 FileOutputStream 进行文件的字节级复制。

示例:

import java.io.*;

public class FileExample {

public static void main(String[] args) {

// 写入文件

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();

}

}

}

2. 网络通信

Java IO 支持网络通信,主要使用 java.net 包中的类,如 Socket 和 ServerSocket,实现客户端与服务器之间的通信。

服务器端: 使用 ServerSocket 监听客户端连接。

客户端: 使用 Socket 连接到服务器。

示例:

import java.io.*;

import java.net.*;

public class NetworkExample {

public static void main(String[] args) {

// 启动服务器

new Thread(() -> {

try (ServerSocket serverSocket = new ServerSocket(12345)) {

System.out.println("服务器已启动,等待客户端连接...");

Socket socket = serverSocket.accept();

System.out.println("客户端已连接");

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

String line;

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

System.out.println("收到客户端消息: " + line);

out.println("服务器收到: " + line);

}

} catch (IOException e) {

e.printStackTrace();

}

}).start();

// 启动客户端

new Thread(() -> {

try (Socket socket = new Socket("localhost", 12345);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) {

String userInput;

while ((userInput = stdIn.readLine()) != null) {

out.println(userInput);

System.out.println("服务器响应: " + in.readLine());

}

} catch (IOException e) {

e.printStackTrace();

}

}).start();

}

}

3. 数据序列化

Java IO 提供了对象序列化机制,可以将对象转换为字节流,并从字节流还原对象。

对象序列化: 使用 ObjectOutputStream 将对象写入文件或网络。

对象反序列化: 使用 ObjectInputStream 从文件或网络读取对象。

示例:

import java.io.*;

class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person{name='" + name + "', age=" + age + '}';

}

}

public class SerializationExample {

public static void main(String[] args) {

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

// 序列化

try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {

out.writeObject(person);

} catch (IOException e) {

e.printStackTrace();

}

// 反序列化

try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {

Person deserializedPerson = (Person) in.readObject();

System.out.println("反序列化后的对象: " + deserializedPerson);

} catch (IOException | ClassNotFoundException e) {

e.printStackTrace();

}

}

}

4. 处理标准输入输出

Java IO 可以处理标准输入(键盘输入)和标准输出(控制台输出),常用于控制台应用程序。

读取标准输入: 使用 System.in 和 BufferedReader 读取用户输入。

写入标准输出: 使用 System.out 打印输出到控制台。

示例:5. 管道通信

Java IO 提供了管道流 (PipedInputStream 和 PipedOutputStream),可以在同一个 JVM 中的不同线程之间进行通信。

示例:

import java.io.*;

public class PipedIOExample {

public static void main(String[] args) throws IOException {

try {

PipedOutputStream out = new PipedOutputStream();

PipedInputStream in = new PipedInputStream(out);

// 生产者线程

new Thread(() -> {

try (PrintWriter writer = new PrintWriter(out)) {

int i = 0;

while(i <100){

writer.println("Hello from producer!" + i);

i++;

}

}

}).start();

// 消费者线程

new Thread(() -> {

try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {

String line;

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

System.out.println("消费者收到: " + line);

}

} catch (IOException e) {

e.printStackTrace();

}

}).start();

} catch (IOException e) {

e.printStackTrace();

}

}

}

以上是 Java IO 在文件操作、网络通信、数据序列化、标准输入输出和管道通信等场景中的常见应用示例。

虽然有更牛逼的框架,但是这些作为基础,还是有必要了解一下。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OR0Xy_hIn4nJaNBfxprnYEzA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券