Java IO运用详解

Java中的IO(Input/Output)是指输入/输出系统,通过IO可以实现数据的输入和输出。IO在Java程序中非常重要,它可以用于读取和写入文件、网络数据传输和处理用户输入等。本文将介绍Java IO的基本概念、常用类和使用示例。

一、Java IO基本概念

在Java中,IO主要分为字节流和字符流两种类型。字节流以字节为单位操作数据,适用于图像、音频等二进制数据;字符流以字符为单位操作数据,适用于文本数据。Java IO库提供了一系列类来实现不同类型的IO操作。

Java IO的基本模型是通过输入流(InputStream)和输出流(OutputStream)来操作数据。输入流用于读取数据,输出流用于写入数据。Java IO提供了许多不同类型的输入流和输出流,如文件输入流、文件输出流、缓冲输入流、缓冲输出流等。

二、Java IO常用类

  1. InputStream和OutputStream:这是Java IO中最基本的输入流和输出流类。它们是字节流,用于读取和写入字节数据。示例代码如下:
import java.io.*;

public class StreamExample {
    public static void main(String[] args) {
        try {
            // 创建输入流
            InputStream inputStream = new FileInputStream("input.txt");
            // 创建输出流
            OutputStream outputStream = new FileOutputStream("output.txt");

            // 读取输入流的数据,并写入输出流
            int data;
            while ((data = inputStream.read()) != -1) {
                outputStream.write(data);
            }

            // 关闭流
            inputStream.close();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. Reader和Writer:这是Java IO中用于字符流操作的类。它们是字符流,用于读取和写入字符数据。示例代码如下:
import java.io.*;

public class ReaderWriterExample {
    public static void main(String[] args) {
        try {
            // 创建字符输入流
            Reader reader = new FileReader("input.txt");
            // 创建字符输出流
            Writer writer = new FileWriter("output.txt");

            // 读取字符输入流的数据,并写入字符输出流
            int data;
            while ((data = reader.read()) != -1) {
                writer.write(data);
            }

            // 关闭流
            reader.close();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. BufferedReader和BufferedWriter:这是Java IO中用于缓冲流操作的类。它们是字符流,通过缓冲区提高读写效率。示例代码如下:
import java.io.*;

public class BufferedReaderWriterExample {
    public static void main(String[] args) {
        try {
            // 创建字符输入流
            BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
            // 创建字符输出流
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));

            // 读取字符输入流的数据,并写入字符输出流
            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }

            // 关闭流
            reader.close();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

三、Java IO使用示例

下面通过一个实际的示例来演示Java IO的使用。假设有一个数学计算程序,它可以读取用户输入的数学表达式,并计算出结果。

  1. 首先,我们需要定义一个用于计算的方法,假设我们使用逆波兰表达式计算算术表达式。逆波兰表达式是一种将运算符放在操作数后面的表示法,例如表达式"1 + 2"的逆波兰表达式为"1 2 +"。我们可以使用栈来实现逆波兰表达式的计算。
import java.util.Stack;

public class Calculator {
    public static double calculate(String expression) {
        String[] tokens = expression.split(" ");
        Stack<Double> stack = new Stack<>();

        for (String token : tokens) {
            if (isOperator(token)) {
                double operand2 = stack.pop();
                double operand1 = stack.pop();
                double result = evaluate(operand1, operand2, token);
                stack.push(result);
            } else {
                double value = Double.parseDouble(token);
                stack