java中的FileInputStream三种read()函数用法

针对“java中的FileInputStream三种read()函数用法”,我整理了以下攻略:

一、FileInputStream简介

java.io包中的FileInputStream是一个类,它用于从文件系统中的文件获取输入字节流。它继承了InputStream类。在使用FileInputStream时,一个文件必须存在,并且应该以字节的形式存在。
FileInputStream类的构造函数有三种不同的方式,它们是:

public FileInputStream(File file) throws FileNotFoundException {} //使用文件路径构建FileInputStream对象
public FileInputStream(String path) throws FileNotFoundException {} //使用文件对象构建FileInputStream对象
public FileInputStream(FileDescriptor fdObj) {} //使用文件描述符对象构建FileInputStream对象

二、FileInputStream中的三种read()函数用法

FileInputStream类提供了三种不同的read()方法重载,它们可以读取多个字节数据并进行不同的处理。这三种read()方法是:

read()

public int read() throws IOException {}
  • 从输入的字节流中读取下一个字节,并返回该字节的值(0~255)。
  • 如果已经到达输入流的末尾,则返回-1。

示例1:

假设文件路径为"test.txt", 文件内容为:"Hello World!"。以下代码展示如何使用read()方法从文件中读取并输出文件中的内容:

FileInputStream fis = null;
try {
    fis = new FileInputStream("test.txt");
    int data = fis.read();
    while (data != -1) {
        System.out.print((char) data);  // 打印文件内容
        data = fis.read();  // 从输入流中读取新的字节
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        fis.close();  // 释放资源
    } catch (IOException e) {
        e.printStackTrace();
    }
}

输出结果如下:

Hello World!

read(byte[] b)

public int read(byte[] b) throws IOException {}
  • 从输入流中读取一定数量的字节,并将它们存储在数组b中。
  • 该方法返回读取的字节数。如果已经到达输入流的末尾,则返回-1。

示例2:

假设文件路径为"test.txt", 文件内容为:"Hello World!"。以下代码展示如何使用read(byte[] b)方法从文件中读取并输出文件中的内容:

FileInputStream fis = null;
try {
    fis = new FileInputStream("test.txt");
    byte[] buffer = new byte[1024];  // 数组大小为1024字节
    int length;
    while ((length = fis.read(buffer)) != -1) {
        System.out.write(buffer, 0, length);  // 打印读取的内容
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        fis.close();  // 释放资源
    } catch (IOException e) {
        e.printStackTrace();
    }
}

输出结果如下:

Hello World!

read(byte[] b, int off, int len)

public int read(byte[] b, int off, int len) throws IOException {}
  • 从输入流中读取最多len个字节,并将它们存储在数组b中,开始存储的位置是offset。
  • 该方法返回读取的字节数。如果已经到达输入流的末尾,则返回-1。

示例3:

假设文件路径为"test.txt", 文件内容为:"Hello World!"。以下代码展示如何使用read(byte[] b, int off, int len)方法从文件中读取并输出文件中的内容:

FileInputStream fis = null;
try {
    fis = new FileInputStream("test.txt");
    byte[] buffer = new byte[1024];  // 数组大小为1024字节
    int length = fis.read(buffer, 0, 5);  // 从输入流中读取5个字节
    String str = new String(buffer, 0, length, "UTF-8");
    System.out.println(str);  // 打印读取的内容
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        fis.close();  // 释放资源
    } catch (IOException e) {
        e.printStackTrace();
    }
}

输出结果如下:

Hello

通过以上三个示例,我们可以清楚地了解到FileInputStream的三种不同的read()函数用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中的FileInputStream三种read()函数用法 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • java.lang.NoClassDefFoundError错误解决办法

    下面我将详细讲解如何解决”java.lang.NoClassDefFoundError”错误。 1. 什么是”java.lang.NoClassDefFoundError”错误 “java.lang.NoClassDefFoundError”错误是Java程序编译或运行过程中遇到的一个常见错误,表示无法找到相关类的定义。它通常是由以下原因导致的: 缺少相关类…

    Java 2023年5月20日
    00
  • 通过实例解析POJO和JavaBean的区别

    首先,我们需要了解POJO和JavaBean的定义和区别。POJO(Plain Old Java Object)是一个简单的Java对象,它通常只包含了一些属性和其对应的getter/setter方法,没有实现任何接口,也不继承任何类。而JavaBean是一种特殊的POJO,它按照JavaBean的标准定义,需要包含空的构造方法、私有属性(通常使用priva…

    Java 2023年6月15日
    00
  • 为什么阿里巴巴要求日期格式化时必须有使用y表示年

    阿里巴巴规定日期格式化时必须使用y表示年,这是因为其涉及到两个重要的时间概念:年份和周数。 在时间处理过程中,使用两位数代表年份可能会存在歧义,例如2019年和1919年在只用两位数表示时是相同的。而使用四位数则可以清晰明确地表示年份,避免了可能发生的混淆和错误。因此,阿里巴巴强制使用四位数表示年份。 此外,阿里巴巴还要求在日期格式化时需要使用大写字母Y表示…

    Java 2023年5月20日
    00
  • Sprint Boot @ConditionalOnBean使用方法详解

    @ConditionalOnBean是Spring Boot中的一个注解,它用于根据Spring容器中是否存在指定的Bean来决定是否启用或禁用某个组件。在使用Spring Boot开发应用程序时,@ConditionalOnBean是非常有用的。本文将详细介绍@ConditionalOnBean的作用和使用方法,并提供两个示例说明。 @Conditiona…

    Java 2023年5月5日
    00
  • spring5新特性全面介绍

    Spring5新特性全面介绍 1. 简介 Spring是一个流行的Java企业级开发框架,它提供了许多方便的功能和组件,例如依赖注入(DI)、切面编程(AOP)和面向切面编程(OOP)。Spring 5是Spring框架的最新版本,它引入了众多新特性和改进,以使Spring更加容易使用和灵活。 这里我们将详细介绍Spring5的新特性。 2. 响应式编程 S…

    Java 2023年5月19日
    00
  • spring结合struts的代码详解

    下面我来详细讲解“spring结合struts的代码详解”的完整攻略。 一、结合Spring和Struts的优势 使用Spring结合Struts开发Web应用程序,最主要的优点就是能够将Struts的ActionBean实例管理交由Spring容器,使得我们能够在ActionBean中自动注入Spring容器中的Bean,从而更加方便和灵活地开发Web应用…

    Java 2023年5月20日
    00
  • Java面向对象的封装你了解吗

    Java的面向对象编程中,封装是指将功能和数据进行封装,使得外部无法直接访问、修改。封装有助于保护数据的安全性,同时也提高了代码的可维护性和可扩展性。 封装的实现主要是通过访问修饰符来控制属性和方法的访问权限。Java 中常用的访问修饰符包括 public、private、protected 和 default。其中,public 表示公开的,任何地方都可以…

    Java 2023年5月26日
    00
  • MyBatis5中Spring集成MyBatis事物管理

    下面是关于MyBatis5中Spring集成MyBatis事物管理的完整攻略: 1、引入依赖 首先需要在pom.xml文件中引入MyBatis和Spring的依赖,具体如下: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部