java的InputStream获取字节大小相关方法

这篇具有很好参考价值的文章主要介绍了java的InputStream获取字节大小相关方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java的InputStream获取字节大小相关方法

1 通过StreamUtils工具类的copyToByteArray()方法获取(推荐)

正常大部分项目都是使用的Spring,而Spring已经帮我们开发好了相应的工具类,我们直接调用即可。

InputStream is = this.getClass().getResourceAsStream(filePath);
byte[] bytes = StreamUtils.copyToByteArray(is);
is.read(bytes);

2 通过available()方法获取(不推荐)

InputStream is = this.getClass().getResourceAsStream(filePath);
byte[] bytes = new byte[is.available()];
is.read(bytes);

2.1 不推荐理由

可以看一下方法注释:

/**
 * Returns an estimate of the number of bytes that can be read (or
 * skipped over) from this input stream without blocking by the next
 * invocation of a method for this input stream. The next invocation
 * might be the same thread or another thread.  A single read or skip of this
 * many bytes will not block, but may read or skip fewer bytes.
 *
 * <p> Note that while some implementations of {@code InputStream} will return
 * the total number of bytes in the stream, many will not.  It is
 * never correct to use the return value of this method to allocate
 * a buffer intended to hold all data in this stream.
 *
 * <p> A subclass' implementation of this method may choose to throw an
 * {@link java.io.IOException} if this input stream has been closed by
 * invoking the {@link #close()} method.
 *
 * <p> The {@code available} method for class {@code InputStream} always
 * returns {@code 0}.
 *
 * <p> This method should be overridden by subclasses.
 *
 * @return     an estimate of the number of bytes that can be read (or skipped
 *             over) from this input stream without blocking or {@code 0} when
 *             it reaches the end of the input stream.
 * @exception java.io.IOException if an I/O error occurs.
 */

大致意思是返回的字节数可能由于网络原因阻塞一次只能返回部分字节或者另外一个线程也读了导致返回部分字节,也就是说如果使用available()方法去获取InputStream的长度来作为字节数组的长度,那可能会出现字节接受不完整的错误,所以不推荐使用该方法的返回值去分配一个缓冲的byte数组。文章来源地址https://www.toymoban.com/news/detail-726585.html

3 通过file.length()来获取

File file = new File(path);
InputStream stream = new FileInputStream(file);
byte[] bytes = new byte[file.length()]

到了这里,关于java的InputStream获取字节大小相关方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 认识File 类和InputStream, OutputStream

            Java中通过file类来 对一个文件(包括目录)进行抽象的描述。 并且有File类对象,并不代表真实存在该文件 。认识File类,就先了解File类的属性,构造方法,方法。 属性: 修饰符及类型         属性                         说明 static String         pathSeparato

    2024年02月07日
    浏览(26)
  • File 类和 InputStream, OutputStream 的用法

    目录 1.文件系统操作  File 类 2.文件内容操作  InputStream  1.创建InputStream类对象  2.读文件 OutputStream 1.创建OutputStream类对象 2.写文件       上篇博客我们详情介绍了文件系统的相关知识。在文件系统操作中,由于文件是在硬盘上的,直接写代码不好操作,所以,我们通过创建

    2024年02月03日
    浏览(23)
  • outputStream(输出流)转inputstream(输入流)以及输入流如何复用

    需求: 通过MultipartFile 上传文件到文件服务器,上传前要把文件转为pdf格式进行上传,并生成文件摘要用来验证服务器中的文件是否被篡改。 准备: 需要涉及到 inputstream(输入流)或outputStream(输出流)要使用两次 。 一、如果该文件本身就是pdf格式则直接进行上传。第一次

    2024年02月14日
    浏览(31)
  • 【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

    目录 1. File 概述 1.1 File的属性 1.2 File的构造方法 1.3 File的方法 2.读文件 2.1 InputStream 概述 2.2 FileInputStream 概述 2.3 正确打开和关闭文件的方式 2.4 不同方式读取文件代码示例 2.4 另一种方法:利用 Scanner 进行字符读取 3.写文件 3.1 OutputStream 概述 3.2 利用 OutputStreamWriter 进行字符写

    2024年01月19日
    浏览(23)
  • <JavaEE> 文件IO -- 数据流和文件内容操作(Reader 和 Writer 、InputStream 和 OutputStream)

    目录 一、数据流概述 二、流的关闭 2.1 使用 close() 方法 2.2 使用 try-finally 2.3 使用 try-with-resources 三、字符流的读写 3.1 Reader 类 3.2 Writer 类 四、字节流的读写 4.1 InputStream 类 4.2 OutputStream 类 1)在 Java 中,文件的操作分为两类 操作文件系统 通过 File 类,在系统中进行增、删

    2024年02月04日
    浏览(34)
  • JAVA将字节大小转换成(B,KB,MB,GB,TB)单位

    项目中需要判断一个文件是否超过指定大小,如果超过了,需要将文件大小转换为最大满足单位。 这里用了两种方式

    2024年02月10日
    浏览(28)
  • 数字证书的相关专业名词(中)---根证书和CRL,以及java中CRL的获取和验证方法

    上篇文章我们主要了解了PKI中的数字证书和PKCS,这篇文章我们主要了解一下根证书,以及OCSP和CRL。 在公钥基础设施(PKI)中,根证书是 整个数字证书体系的最高级别证书 。根证书由受信任的第三方机构(CA)颁发,用于验证其他证书以及建立信任链。 当您收到一个数字证

    2024年02月05日
    浏览(64)
  • Java获取上传的文件大小并且转换对文件大小进行单位转化

    今天产品提出来一个需求,上传文件的时候要记录文件的大小,并且保存到数据库里面。 正好借着这个机会,分享下对文件大小进行单位转化的一个方法。 一般和前后端进行文件交互,都是通过MultipartFile实现的,它有一个方法:getSize() 无需参数,返回的是该文件Long类型的

    2024年02月16日
    浏览(28)
  • MultipartFile获取文件名,文件大小,文件后缀等方法

    获取文件名及后缀信息: 获取文件名: 获取文件后缀:这个后缀带‘.’如:.zip,如果不想带‘.’这样即可lastIndexOf(\\\".\\\")+1 获取文件类型: 获取文件大小:

    2024年02月16日
    浏览(44)
  • Qt 常用方法 获取磁盘总大小、可用空间、文件夹大小 文件大小B KB M G转换

    1.通过QFile获取文件大小 注意:返回的是字节个数 通过QFileInfo获取文件大小 2. 获取磁盘空间 3 .获取选择路径下总文件大小 4. 转换大小单位 bit  === byte   bit / 8 byte === KB byte / 1024 KB = MB KB / 1024 MB = GB MB / 1024 GB === TB GB / 1024

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包