您的位置:

Java 输入输出流简介

Java是一门可以进行文件读写操作的编程语言,而Java的输入输出流就是这样的一个文件读写系统。本文将介绍Java输入输出流的基础概念、输入流和输出流的区别、以及常用的输入输出类。

一、基础概念

输入流和输出流通常表示程序与外部资源(文件、网络连接等)的数据输入输出方式。Java I/O流是与平台无关的,并且Java API提供了标准I/O,因此可以使用与特定操作系统无关的代码进行I/O操作,而且不需要手动释放资源。

Java中有两种类型的I/O流:字节流和字符流。I/O流中,字节流用于读取和写入原始8位字节,而字符流用于读取和写入16位Unicode字符。

二、输入流和输出流的区别

Java输入流和输出流的最大区别在于方向。输入流是读取程序输入的数据,然后将其写入内存或硬盘,它们从外部读取数据并将其传输到内部程序。而输出流是从内部程序读取数据,然后传输到外部环境,即将程序产生的数据发送到外部环境。

Java中的输入流和输出流通常是成对使用的。例如,通过使用一个文件的读取流,我们可以使用一个文件写入流将它写入到另一个位置(或同一位置)。

三、常用输入输出类

1. 字节流

ByteStreams提供了用于处理二进制数据的基础输入和输出操作的类。以下是常用的字节流类:

    
        FileInputStream: 用于从文件中读取数据的字节流。
        ByteArrayOutputStream: 用于将数据写入到与 ByteArrayOutputStream实例关联的内部缓冲区的输出流。
        BufferedInputStream: 带缓存的输入字节流。
        BufferedOutputStream: 带缓存的输出字节流。
    

2. 字符流

CharacterStreams 提供了用于读写文本数据的基础输入和输出操作的类。以下是常用的字符流类:

    
        FileReader: 用于从文件中读取字符的字符流。
        FileWriter: 用于将字符写入文件的输出字符流。
        BufferedReader: 带缓存的输入字符流。
        BufferedWriter: 带缓存的输出字符流。
    

3. 数据流

在Java中,数据流是可以读写原始数据类型(int、float、long等)和字符串的类。以下是常用的数据流类:

    
        DataInputStream: 是用于读取Java原始数据类型和字符串的输入流。
        DataOutputStream: 实现用于将Java原始数据类型和字符串写入数据流的输出流。
    

四、输入输出流样例

以下是Java输入输出流的示例:

    
        import java.io.*; 
        
        public class Main {
            public static void main(String[] args) {
                try {
                    // 创建一个文件
                    File myFile = new File("myFile.txt");
                    myFile.createNewFile();
                    
                    // 创建一个输出字节流
                    OutputStream os = new FileOutputStream(myFile);
                    
                    // 写入一些数据
                    byte[] data = "Java输入输出流简介".getBytes();
                    os.write(data);
                    
                    // 关闭流
                    os.close();
                    
                    // 创建一个输入字节流
                    InputStream is = new FileInputStream(myFile);
                    
                    // 读取数据并打印
                    byte[] b = new byte[1024];
                    is.read(b);
                    System.out.println(new String(b));
                    is.close();
                } catch(IOException e) {
                    e.printStackTrace();
                }
            }
        }
    

这个示例中我们首先创建了一个名为myFile.txt的文件,然后创建一个输出字节流,并写入一些数据。之后,我们创建一个输入字节流来读取这个文件,并将读取的数据打印到控制台上。最后我们关闭了这些流。

总结

Java 输入输出流是Java程序中不可或缺的部分。我们本文介绍了Java输入输出流的基础概念,输入流和输出流的区别,以及常用的输入输出类和相应的示例。这些信息将帮助Java程序员了解如何使用Java的输入输出流进行数据读写操作。