JavaIO基础知识

Java IO(Input/Output)是Java中用来处理输入/输出的一套API,它可以帮助我们完成文件读写、网络传输等操作。学习 Java I/O 是 Java 开发者的必修课程。在本篇文章中我们将介绍基础的 Java IO 知识,并通过代码示例来演示它们的使用。

一、Java IO 的基本概念

Java 的 IO 流通常被分为两个大类:字节流和字符流。字节流和字符流的区别在于它们处理的数据单位不同。字节流以字节为单位进行读写操作,而字符流则以字符为单位进行读写操作。

Java IO 里最基本的类是java.io中的 InputStream 和 OutputStream。InputStream 和 OutputStream 是所有字节流的父类,提供了最基本的读写方法。

除了 InputStream 和 OutputStream,Java 还提供了字符流,其基本类是java.io中的 Reader 和 Writer。

二、Java IO 流的分类

Java IO 流分为四大类:字节输入流、字节输出流、字符输入流和字符输出流。四个类都是抽象类,不能直接使用。要实现读写操作需借助其子类类。

1. 字节输入流

字节输入流可以从文件或者其它数据源中读取字节数据,最基本的字节输入流是 InputStream。

    try(InputStream inputStream = new FileInputStream("example.txt")) {
        int data = inputStream.read();
        while(data != -1) {
            System.out.println(data);
            data inputStream.read();
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码中,首先通过FileInputStream打开文件example.txt,然后通过read()方法一次一个字节地读取文件内容。当read()方法返回-1时,表示文件已经读取完毕,循环结束。

2. 字节输出流

字节输出流将数据以字节的方式写入文件或其它输出目的地中,最基本的字节输出流是 OutStream。

    try(OutputStream outputStream = new FileOutputStream("example.txt")) {
        byte[] data = "Hello World".getBytes();
        outputStream.write(data);
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码首先通过FileOutStream打开文件 example.txt,然后将“Hello World”转换为字节数组,并使用write()方法将它们写入文件中。

3. 字符输入流

Java 中的字符流比较常用,最基本的字符输入流是 Reader。

    try(Reader reader = new FileReader("example.txt")) {
        int data = reader.read();
        while(data != -1) {
            System.out.printf("%c", data);
            data = reader.read();
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码中,首先使用FileReader打开文件 example.txt,然后通过read()方法一次一个字符地读取文件内容。当read()方法返回-1时,表示文件已经读取完毕,循环结束。

4. 字符输出流

Java 中的字符输出流也比较常用,最基本的字符输出流是 Writer。

    try(Writer writer = new FileWriter("example.txt")) {
        String data = "Hello World";
        writer.write(data);
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码首先通过FileWrite打开文件 example.txt,然后将“Hello World”写入文件中。

三、Java IO 流的操作

Java IO 流提供了各种不同的方法,可以通过它们实现不同的IO读写操作。

1. 文件操作

Java 的File类提供了访问文件系统的方法,可以对文件和目录进行访问和操作。

    File file = new File("example.txt");
    if(file.exists()) {
        System.out.println("文件存在");
    } else {
        System.out.println("文件不存在");
    }

以上代码使用Java内置的File对象来检查文件是否存在。如果文件存在,则输出“文件存在”,否则输出“文件不存在”。

2. 缓存操作

缓存操作可以提高IO读写效率。Java IO 中的缓存类有BufferedReader、BufferedWriter、ByteArrayInputStream等。其中,Java 8 中已经提供了NIO类库,NIO类库相比IO类库有更高的效率和更强的扩展性。

    try(BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
        String data = null;
        while((data = reader.readLine()) != null) {
            System.out.println(data);
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码中,首先使用BufferedReader类对FileReader类进行了包装,生成了一个字符输入流。然后通过readLine()方法逐行读取了文件内容,并输出到控制台上。

3. 字节流操作

字节流操作可以对字节进行操作。Java IO中的字节流有ByteArrayInputStream、ByteArrayOutputStream、FileInputStream等。

    try(FileInputStream inputStream = new FileInputStream("example.txt")) {
        byte[] data = new byte[1024];
        int len = 0;
        while((len = inputStream.read(data)) != -1) {
            System.out.println(new String(data, 0, len));
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码首先通过FileInputStream类对文件进行读取操作。然后使用read()方法逐个读取文件内容,数据被缓存到 data 数组中。最后将读取到的数据以字符串方式输出到控制台上。

4. 字符流操作

字符流操作可以对字符进行操作,常用的字符流有FileReader、FileWriter等。

    try(FileReader reader = new FileReader("example.txt")) {
        char[] data = new char[1024];
        int len = 0;
        while((len = reader.read(data)) != -1) {
            System.out.println(new String(data, 0, len));
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代码首先通过FileReader类对文件进行读取操作。然后使用read()方法逐个读取文件内容,数据被缓存到 data 数组中。最后将读取到的数据以字符串方式输出到控制台上。

四、总结

本文从Java IO 的基本概念、分类、操作等多个方面详细讲解了Java IO的基础知识,并通过代码示例展示了它们的具体使用。希望本文能够帮助读者了解Java IO,并更好地运用Java IO来完成自己的项目。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/303136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相关推荐

  • Python元祖排序:从基础知识到高级应用

    Python元祖是一种不可变序列,通常用于将一组数据绑定在一起。元祖之间经常需要排序,本文将从基础知识到高级应用,为你详细讲解Python元祖排序。 一、排序方法 Python提供…

    编程 2025-04-28
  • 计算机二级基础知识题库

    计算机二级基础知识题库考试为计算机二级考试的必修科目之一,其中包含了计算机的基本知识以及应用能力等内容。本文将从题库概述、考试内容、备考建议以及编程实例等几个方面进行介绍,希望对广…

    编程 2025-04-27
  • 软件测试理论基础知识

    一、测试概述 软件测试是指在已知测试用例的前提下,检查软件是否满足规定的功能和质量要求的过程。 软件测试的目的是要发现并纠正可能存在的缺陷。它涉及软件开发周期的各个阶段,从需求分析…

    编程 2025-04-23
  • MongoDB基础知识

    一、什么是MongoDB MongoDB是一个开源的文档数据库,它采用了类似于JSON的BSON数据格式,可以支持复杂数据结构和动态查询。MongoDB可以减少不必要的关系型数据设…

    编程 2025-02-27
  • PS基础知识详解

    一、图像的格式 1、我们常接触的图像格式有哪些? 在PS中,我们常用的图像格式有:JPEG、PNG、GIF、RAW等。其中JPEG格式适用于图像,PNG格式适用于图像和图标,GIF…

    编程 2025-02-25
  • 内存类型基础知识

    从计算机诞生至今,RAM(随机存取内存)在架构和形态上都经历了重大变革。它们主要分为两种类型:SRAM(静态随机存取内存)和 DRAM(动态随机存取内存)。 DRAM 又可细分为同…

    2025-02-24
  • 图像复原基础知识

    一、噪声的影响 在数字图像中,噪声是无法避免的,而它的出现通常是由于图像采集、传输和处理等过程中引入的。噪声的存在对于图像的清晰度和细节造成了不同程度的影响,因此在图像复原中需要特…

    编程 2025-02-11
  • 魔术封包唤醒基础知识

    一、概念概述 魔术封包唤醒是指一种技术方式,在网络通信中用于唤醒特定设备的一种技术手段,其原理是在局域网内向目标设备发送一种特定的唤醒包,当目标设备接收到该唤醒包后,即可从睡眠状态…

    编程 2025-02-01
  • Linux基础知识

    一、Linux简介 Linux操作系统是一种基于Unix操作系统的自由软件和开源软件,是自由操作系统中最著名的一个。 Linux操作系统包含了一整套完善的工具集,包括系统工具、应用…

    编程 2025-01-27
  • C++运算符:基础知识、用法和示例

    C++运算符是用于计算、比较或逻辑操作的特殊符号。本文将详细介绍C++运算符的基础知识、用法和示例,包括算术运算符、关系运算符、逻辑运算符、位运算符和其他运算符。 一、算术运算符 …

    编程 2025-01-14

发表回复

登录后才能评论