在 Java 中,流(Stream)、文件(File)和 I/O(输入/输出)是处理输入和输出的重要概念。以下是关于这些概念的一些基本知识:

1. 流(Stream):

流是一种用于处理输入和输出的抽象概念。在 Java 中,流可以分为输入流(InputStream)和输出流(OutputStream)。流的操作是逐个字节或字符进行的。

字节流(Byte Streams):

字节流用于处理二进制数据,通常用于处理图像、音频、视频等文件。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        try {
            // 输入流读取文件
            FileInputStream input = new FileInputStream("input.txt");
            int data;
            while ((data = input.read()) != -1) {
                System.out.print((char) data);
            }
            input.close();

            // 输出流写入文件
            FileOutputStream output = new FileOutputStream("output.txt");
            String text = "Hello, Java!";
            output.write(text.getBytes());
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符流(Character Streams):

字符流用于处理文本数据,以字符为单位进行操作,适用于处理文本文件。
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CharacterStreamExample {
    public static void main(String[] args) {
        try {
            // 输入流读取文件
            FileReader reader = new FileReader("input.txt");
            int data;
            while ((data = reader.read()) != -1) {
                System.out.print((char) data);
            }
            reader.close();

            // 输出流写入文件
            FileWriter writer = new FileWriter("output.txt");
            String text = "Hello, Java!";
            writer.write(text);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 文件(File):

File 类用于表示文件或目录的路径。它提供了一些方法用于检查文件属性、创建文件、删除文件等。
import java.io.File;

public class FileExample {
    public static void main(String[] args) {
        // 创建 File 对象
        File file = new File("example.txt");

        // 检查文件是否存在
        if (file.exists()) {
            System.out.println("File exists");
        } else {
            System.out.println("File does not exist");
        }

        // 获取文件名
        String fileName = file.getName();
        System.out.println("File Name: " + fileName);

        // 获取文件路径
        String filePath = file.getAbsolutePath();
        System.out.println("File Path: " + filePath);

        // 创建新文件
        try {
            if (file.createNewFile()) {
                System.out.println("File created successfully");
            } else {
                System.out.println("File already exists");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. I/O(输入/输出):

Java 提供了 java.io 包来支持输入和输出操作。InputStream 和 OutputStream 是用于处理字节的基本 I/O 类,而 Reader 和 Writer 是用于处理字符的基本 I/O 类。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaderWriterExample {
    public static void main(String[] args) {
        try {
            // 使用 BufferedReader 读取文件
            BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();

            // 使用 BufferedWriter 写入文件
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
            writer.write("Hello, Java!");
            writer.newLine(); // 写入换行符
            writer.write("This is a new line.");
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这只是关于 Java 流、文件和 I/O 的一些基本概念和示例。在实际应用中,通常会使用更高级的类和方法来简化 I/O 操作,例如 Scanner、PrintWriter、Files 等。


转载请注明出处:http://www.zyzy.cn/article/detail/420/Java