自学内容网 自学内容网

JAVA学习-IO.流

       Java IO流是Java中处理输入输出的机制,它提供了一种处理文件、网络等输入输出操作的方式。IO流主要分为输入流和输出流,根据数据的不同类型,又可以细分为字节流和字符流。

一、常见的IO流包括:

1. 字节流(Byte Stream):

       以字节为单位进行读写的流,在处理二进制文件(如图片、视频等)时常用。

- InputStream:

       字节输入流,用于从文件或其他数据源读取字节数据。常用的子类有FileInputStream、ByteArrayInputStream等。

- OutputStream:

       字节输出流,用于向文件或其他数据源写入字节数据。常用的子类有FileOutputStream、ByteArrayOutputStream等。

2. 字符流(Character Stream):

       以字符为单位进行读写的流,在处理文本文件时常用。

- Reader:

       字符输入流,用于从文件或其他数据源读取字符数据。常用的子类有FileReader、InputStreamReader等。

- Writer:

       字符输出流,用于向文件或其他数据源写入字符数据。常用的子类有FileWriter、OutputStreamWriter等。

二、IO流的特点包括:

- 字节流和字符流:

       字节流适用于处理二进制数据,字符流适用于处理文本数据,字符流会对字节进行编码和解码。

- 阻塞和非阻塞:

       阻塞IO会在读写数据时阻塞当前线程,直到读写完成,而非阻塞IO可以在读写时不立即返回,而是通过轮询方式检查是否有数据可读写。

- 缓冲区:

       IO流通常会使用缓冲区来提高读写的效率,缓冲区在内存中创建一个数组,读写数据时先将数据存放到缓冲区,然后再读写到目标文件或数据源。

- 自动关闭:

       Java 7中引入了try-with-resources语句,可以在使用完IO流后自动关闭,无需手动调用close方法。

以下是一个使用字符流读写文件的示例代码:

import java.io.*;


public class FileReadWriteExample {

    public static void main(String[] args) {

        try {

            // 创建字符输入流

            FileReader reader = new FileReader("input.txt");

            // 创建字符输出流

            FileWriter writer = new FileWriter("output.txt");


            // 读取文件内容并写入到另一个文件

            int ch;

            while ((ch = reader.read()) != -1) {

                writer.write(ch);

            }


            // 关闭流

            reader.close();

            writer.close();


            System.out.println("文件读写完成");

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

        该代码通过字符流读取input.txt文件的内容,并将内容写入到output.txt文件中。最后,关闭流并提示读写完成。

三、相比于其他编程语言

       Java IO流提供了比较丰富的功能和灵活的使用方式。在高级应用中,可以使用一些包装类对流进行装饰,以增加功能或提供更高级别的操作。例如,使用BufferedReader对字符输入流进行包装,可以提供缓冲读取和按行读取的功能;使用ObjectInputStream对字节输入流进行包装,可以实现对象的序列化和反序列化。

四、总结:

       Java IO流提供了一种方便、灵活的方式来处理输入输出操作。通过选择合适的流类型和使用相关方法,可以有效地读取和写入文件或其他数据源。在高级应用中,可以使用装饰器模式对流进行功能增强。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)


原文地址:https://blog.csdn.net/weixin_69763181/article/details/136526653

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!