Java文件流读取

一、什么是文件流?

文件是指产生的数据保存在硬盘上的容器,文件流就是以流的方式读写文件中的数据。Java提供了几个用于访问文件的流类,包括FileInputStream、FileOutputStream、FileReader和FileWriter。其中FileInputStream和FileOutputStream主要是用来读写二进制文件,而FileReader和FileWriter主要是用来读写文本文件。

二、使用FileInputStream读取文件的内容

FileInputStream类是用来读取文件内容的,它继承自InputStream类,所以它可以使用InputStream类中的方法来读取数据。FileInputStream的构造方法如下:

public FileInputStream(String name) throws FileNotFoundException
public FileInputStream(File file) throws FileNotFoundException

在实例化FileInputStream对象时,必须传递文件名或文件对象作为参数。FileInputStream的read()方法每次读取一个字节,如果返回-1表示读取到文件末尾。使用FileInputStream读取文件的示例代码如下:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamDemo {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("test.txt");
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char)data);
            }
            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码使用FileInputStream读取test.txt文件中的内容,并打印到控制台上。

三、使用BufferedInputStream提高文件读取的效率

如果需要读取大文件中的数据,使用FileInputStream每次只读取一个字节的方式效率会很低,因此可以使用缓冲区提高读取效率。Java提供了BufferedInputStream类,它可以将底层的输入流包装成一个带缓冲区的输入流,从而提高读取数据的效率。

BufferedInputStream有两个构造方法,分别是:

public BufferedInputStream(InputStream in)
public BufferedInputStream(InputStream in, int size)

第一个构造方法会使用默认的缓冲区大小,而第二个构造方法可以指定缓冲区的大小。

使用BufferedInputStream读取文件的示例代码如下:

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class BufferedInputStreamDemo {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("test.txt");
            BufferedInputStream bis = new BufferedInputStream(fis);
            int data;
            while ((data = bis.read()) != -1) {
                System.out.print((char)data);
            }
            bis.close();
            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码先使用FileInputStream读取test.txt文件,并将其包装为BufferedInputStream,然后使用BufferedInputStream读取文件中的内容并打印到控制台上。

四、使用FileReader读取文本文件内容

FileReader类是用来读取文本文件内容的,它继承自InputStreamReader类,可以使用InputStreamReader类中的方法来读取数据。

FileReader的构造方法如下:

public FileReader(String fileName) throws FileNotFoundException
public FileReader(File file) throws FileNotFoundException

使用FileReader读取文本文件的示例代码如下:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo {
    public static void main(String[] args) {
        try {
            FileReader fr = new FileReader("test.txt");
            int data;
            while ((data = fr.read()) != -1) {
                System.out.print((char) data);
            }
            fr.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码使用FileReader读取test.txt文件中的内容,并打印到控制台上。

五、使用BufferedReader提高文本文件读取的效率

如果需要读取大文本文件中的数据,使用FileReader每次只读取一个字符的方式效率会很低,因此可以使用缓冲区提高读取效率。Java提供了BufferedReader类,它可以将底层的Reader对象包装成一个带缓冲区的Reader,从而提高读取数据的效率。

BufferedReader有两个构造方法,分别是:

public BufferedReader(Reader in)
public BufferedReader(Reader in, int size)

第一个构造方法会使用默认的缓冲区大小,而第二个构造方法可以指定缓冲区的大小。

使用BufferedReader读取文本文件的示例代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderDemo {
    public static void main(String[] args) {
        try {
            FileReader fr = new FileReader("test.txt");
            BufferedReader br = new BufferedReader(fr);
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
            br.close();
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码先使用FileReader读取test.txt文件,并将其包装为BufferedReader,然后使用BufferedReader按行读取文件中的内容并打印到控制台上。

六、小结

本文介绍了Java文件流读取的基本用法,包括使用FileInputStream、BufferedInputStream、FileReader和BufferedReader来读取文件中的数据。其中,使用缓冲区可以提高读取文件的效率。

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

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

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29

发表回复

登录后才能评论