Java读取文件流

一、文件流概述

在Java中,文件是指包含数据的持久性存储。当我们想要读取或写入文件时,就需要使用文件流。文件流是一种用于读写文件数据的IO流,是字节流和字符流的衍生。

文件输入流用于从文件读取数据,文件输出流用于将数据写入文件。Java提供了FileInputStream和FileOutputStream类作为文件流的实现,它们的用法和字节流、字符流的操作方式非常相似。

//读取文件数据
FileInputStream fis = new FileInputStream("test.doc");
byte[] bytes = fis.readAllBytes();
String data = new String(bytes);

//写入文件数据
FileOutputStream fos = new FileOutputStream("output.doc");
String data = "这是要写入文件的数据";
byte[] bytes = data.getBytes();
fos.write(bytes);

二、字节流读取文件

字节流(InputStream和OutputStream)是按照字节(二进制数据)方式进行读写操作的IO流。使用字节流读取文件时,会读取每个字节并将它们转换成Java的原始类型。

其中,FileInputStream类是字节流输入类,它继承自InputStream类。FileInputStream实现了一个文件输入流,可以从文件系统中的文件读取字节。

下面是一个使用字节流读取文件的示例:

FileInputStream fis = new FileInputStream("test.txt");
int data;
while((data = fis.read()) != -1) {
    System.out.print((char) data);
}
fis.close();

在该示例中,我们首先创建一个FileInputStream对象来读取test.txt文件。然后使用while循环来不断读取文件中的数据,并将每个字节转换成char类型输出。最后使用fis.close()关闭输入流。

三、字符流读取文件

字符流是按照字符(Unicode字符集)方式进行读写操作的IO流。使用字符流读取文件时,会将字节数据转换成字符数据。

其中,FileReader是字符流读取类,它继承自InputStreamReader类。FileReader可以从文件中读取字符流数据。

下面是一个使用字符流读取文件的示例:

FileReader fr = new FileReader("test.txt");
int data;
while((data = fr.read()) != -1) {
    System.out.print((char) data);
}
fr.close();

在该示例中,我们首先创建一个FileReader对象来读取test.txt文件。然后使用while循环来不断读取文件中的数据,并将每个字符输出。最后使用fr.close()关闭输入流。

四、BufferedReader读取文件

BufferedReader是Java中经常使用的高效字符缓冲流,使用它读取文件可以减少系统的IO操作次数,提高程序的执行效率。

在Java中,我们通常使用BufferedReader.readLine()方法读取文件中的一行数据。

下面是一个使用BufferedReader读取文件的示例:

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();

在该示例中,我们首先创建一个FileReader对象,然后使用BufferedReader作为输入流,使用readLine()方法读取文件中的一行数据并输出,直到文件结束。最后使用br.close()和fr.close()关闭输入流。

五、FileInputStream和BufferedInputStream读取文件

FileInputStream是Java中常用的字节流,而BufferedInputStream是常用的高效缓冲字节流。

使用BufferedInputStream读取文件时,可以提高程序的执行效率,避免过多的IO操作。

下面是一个使用FileInputStream和BufferedInputStream读取文件的示例:

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();

在该示例中,我们首先创建一个FileInputStream对象,然后使用BufferedInputStream作为输入流,使用read()方法读取文件中的字节数据,并将每个字节转换成char类型输出,直到文件结束。最后使用bis.close()和fis.close()关闭输入流。

六、小结

本文介绍了Java中文件流的基本概念,以及使用FileInputStream、FileReader、BufferedReader、BufferedInputStream等类来实现对文件的读取。

在实际开发中,我们可以根据需求来选择合适的流来读取文件。如果需要读取二进制文件,则使用字节流会更加合适;如果需要读取文本文件,则使用字符流和缓冲流会提高程序性能。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HHOEHHOE
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相关推荐

  • 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
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

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

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

    编程 2025-04-29

发表回复

登录后才能评论