读取文件大小的length()方法,available()方法的联系

java中读取文件进度条的实现 实现功能描述: 当读取一个大文件时,一时半会儿无法看到读取结果,就需要显示一个进度条,是程序员明白已经读了多少文件,可以估算读取还需要多少时间。 实现这个功能比较简单,用到的类有两个:ProgressMonitorInputStream(主要是整个类) 和 ProgressMonitor ,它们在javax.swing中 大体思路,你要首先知道整个文件的大小,和当前已经读取文件的大小,获 阅读详情

前言

这两天突然看到InputStream的available方法,然后想到length方法,后面查API发现,length方法是FIle类的,因其意思相近,故此记录下。

length()方法

先查的JDK API的1.6版本发现FIle类中有对这个方法的描述:返回由此抽象路径名表示的文件的长度。
在这里插入图片描述
这里有两个注意的点,第一个返回值是long类型的,所以对于大文件而言返回的值会比较准确。第二个是如果是目录返回值会不确定。怎样的不确定呢?我开始以为是目录下文件大小的总和,然后代码试了一下,,,,

package com.yuer.io;

import java.io.File;

/**
 * 介绍一些File类的操作
 * @author Yuer
 *
 */
public class FileDemo {
	
	
	public static void main(String[] args) {
		
		File file = new File("C:\\Users\\Yuer\\Desktop\\学校");
		System.out.println("这个文件夹的大小为" + file.length()); // 值不确定,不是文件夹中所有文件大小的总和
		
		File file1 = new File("C:\\Users\\Yuer\\Desktop\\学校\\Wuhan.rar");
		System.out.println("这个文件的大小为" + file1.length()); // 5788 5KB左右
		
		
		
	}

}

运行结果:
在这里插入图片描述
这里Wuhan.rar的大小是5788B,除以1024的结果的结果是5.65KB,如图:
在这里插入图片描述
这里直接看到一个文件夹的大小比这个文件夹中的文件的大小还小,自然,值是不准的。

available()方法

这个方法是InputStream中的。废话不多说,直接看API的解释:
在这里插入图片描述
第一个看返回值是int,所以对于大型文件,可能会出现结果不是很准确的情况。availbale()返回的值是一个估算值,所以一般不能依赖这个值来分配空间。(API中也描述了:返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。)
第二个则是看其描述:有些 InputStream 的实现将返回流中的字节总数,但也有很多实现不会这样做。试图使用此方法的返回值分配缓冲区,以保存此流所有数据的做法是不正确的。能否使用取决于实现了InputStream这个抽象类的具体子类中有没有实现available这个方法。如果实现了那么就可以取得大小,如果没有实现那么就获取不到。例如FileInputStream就实现了available方法,那么就可以用new byte[in.available()];这种方式。但是,网络编程的时候Socket中取到的InputStream,就没有实现这个方法,那么就不可以使用这种方式创建数组。

带硬约束的物理信息神经网络(PINN with Hard Constraint)示例及代码 本文以一个案例介绍了带硬约束的物理信息神经网络的原理及实现步骤。 阅读详情

相关推荐

Codex API 直接集成指南:告别中转代理,构建稳定高效的 AI 应用

在 AI 应用开发中,API 集成是连接模型能力与业务逻辑的核心环节。其基本原理是通过 HTTP 协议,按照服务提供商定义的规范发送请求并解析响应,实现远程调用。标准化的 API 设计确保了跨平台和跨语言的互操作性,其技术价值在于提供了稳定、可控且可扩展的服务接入方式,是构建企业级智能应用的基础。在实际应用场景中,开发者常需集成如 Codex 这类聚合了多种大语言模型的平台,以调用诸如 DeepSeek 等先进模型。然而,部分开发者仍依赖过时的第三方中转代理工具,这不仅引入了单点故障和版本锁定的风险,还可能

weixin_28224217的博客 339

读取文件大小的length()方法,available()方法,getChannel().size()的区别

今天在用到读取文件大小的available()方法的时候,向导length方法,getChannel().size()也是有读取文件大小的功能,便去比较三种方法的区别: 如下:1.length()方法是File类的方法,getChannel().size()是FileChannel的方法,和available()方法是InputStream类的方法, 2,length方和getChannel(

NiuDaWang_的博客 2828

基于Mind+、MOTT实现人工智能

@基于Mind+、MOTT实现人工智能 人工智能实验 一、实验目的及要求 【一】实现人脸识别 【二】实现云数据库应用 【三】实现测温数据mqtt上传至物联网云平台 二、实验原理与内容 基于二哈实现多人人脸学习和识别 基于TinywebDB实现云数据库应用 基于EasyIoT实现mqtt数据上传。 三、实验软硬件环境 硬件:掌控板 软件:Mind+ 四、实验过程(实验步骤、记录、数据、分析) 1.基于二哈实现多人人脸学习和识别 ①在Mind+扩展上的传感器选项选择HUSKYLENS AI 摄像头 ②配置哈士

weixin_44606930的博客 2374

java file available方法的一些注意点

available() 这个方法的返回值为,还可以读取字节个数,为0时,表示到达文末已经不可以再读取了。 可以使用while(is.available()!=0)读取文件字节

qq_20156289的博客 2312

Python实现飞书机器人定时发送文本、图片等群消息

python实现飞书群自动发送告警消息

tyh_keephunger的博客 2万+

汇川Easy 301 和MCGS进行Modbus RTU通讯(485)浮点数读取和写入

4DF0001对应寄存器D0,4DF0003对应寄存器D2。注意:要选com2口,com1口是232通讯。

qq_61916672的博客 2901

【Android】file.length和inputStream.available相等吗

例如,如果使用 FileInputStream 读取文件,则在读取文件的过程中,available() 方法将返回当前剩余可读取的字节数。file.length() 方法返回的是文件的长度,单位是字节,表示整个文件的大小。而 inputStream.available() 方法返回的是当前输入流中可读取的字节数,它可能小于或等于文件的长度,具体取决于输入流的类型和状态。因此,如果想确保读取整个文件,建议使用文件的长度作为读取的字节数,而不是使用 available() 方法。

weixin_42473228的博客 530

macOS Jdk1.8安装(目前主流版本的jdk)

添加环境环境变量,类似于windows的高级设置中path配置的环境变量。查看 JAVA_HOME 目录。查看 JDK 版本信息。一直下一步安装就好了。在终端的根目录下运行。

m0_50207524的博客 9353

【java代码】——获取文件大小的三种方式区别

前言 最近接触下载和上传文件,一直在循环使用length和available两种方法,但是我只会用,不知道两者到底有什么本质的区别,后来基本了解了一些,分享给大家! 内容 1.Length 2.available 3.size...

你看到的逆袭,只不过是一场预备很久,草蛇灰线,伏笔千里的反攻 1100

Unreal使用nDisplay制作裸眼3D(9宫格)

摘要: nDisplay是虚幻引擎的分布式实时渲染技术,可将内容同步输出到多个显示设备(如LED墙、投影仪等),构建沉浸式可视化系统。其核心功能包括:分布式渲染(支持多台设备协同处理高分辨率内容)、空间透视校正(通过追踪观众动态调整画面几何关系)以及虚拟拍摄应用。配置时需设置集群组件(Cluster、Host、Node、Viewport)定义渲染逻辑,空间组件(nDisplayScreen、ViewPoint)确定投影关系。文中以9宫格配置为例,详细演示了从工程创建到影片渲染合成的全流程,最终通过多视口合成

TxNet 608

2026年软考信息安全工程师备考指南

信息安全工程师是信息产业部和人事部举办的软考中新增开的一门考试。软考全称全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格,是信息产业部和人事部在最新的“国人厅发[2007]139号文件中新增的专业。2016年下半年,第一次开考信息安全工程师(中级)考试。 考试科目: 1.信息安全基础知识,考试时间为150分钟,笔试,选择题; ...

鹿鸣天涯 7396

available()方法的使用总结

先看看API的说明: public int available() throws IOException 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。下一个调用可能是同一个线程,也可能是另一个线程。一次读取或跳过此估计数个字节不会受阻塞,但读取或跳过的字节数可能小于该数。 注意:有些 InputStream 的实现将返

【小喵】的博客 2万+

Transformer实战——Transformer自编码模型

自编码模型依赖于原始 Transformer 编码器,并且在解决分类问题时非常高效。除了 BERT 外,还有许多流行的自编码模型,在本节中,我们将一些除 BERT 外的自编码模型,这些模型的目标是通过优化预训练过程、增加层数或头数、改善数据质量、设计更好的目标函数等,来在下游任务上取得更好的表现。这些改进大致可以分为两个方面,更好的架构设计选择和预训练控制。

盼小辉丶的博客 9318

length方法,getChannel().size()都有读取文件大小的功能,比较三种方法的区别:

length方法,getChannel().size()都有读取文件大小的功能,比较三种方法的区别: 如下:1.length()方法是File类的方法,getChannel().size()是FileChannel的方法,和available()方法是InputStream类的方法, 2,length方和getChannel().size()方法返回的是long类型,availa()方法返回的是int类型; 测试代码: File file =new File("D:\\ttt.txt"); Sy

好奇心大爆炸 1243

毕业设计,基于SpringBoot+Vue+MySQL开发的中小企业人事管理系统,源码+数据库+论文答辩+毕业论文+视频演示

毕业设计,基于SpringBoot+Vue+MySQL开发的中小企业人事管理系统,源码+数据库+论文答辩+毕业论文+视频演示随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,中小企业人事管理系统当然也不能排除在外。中小企业人事管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot框架构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结,得出系统中存在的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为今后开发类似系统提供了借鉴和帮助。这种个性化的网上管理系统特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对中小企业人事管理系统而言非常有利。本中小企业人事管理系统采用的数据库是MySQL,使用springboot框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。1、关于中小企业人事管理系统的基本要求:(1)功能要求:可以管理首页、个人中心、员工管理、部门信息管理、职位信息管理、福利信息管理、培训信息管理、任务信息管理、工资信息管理、考勤信息管理、招聘信息管理等功能模块。(2)性能:在不同操作系统上均能无差错实现在不同类型的员工登入相应界面后能不出差错、方便地进行预期操作。(3)安全与保密要求:员工都必须通过注册、登录才能进入系统,并且员工的权限也需要根据员工的类型进行限定。(4)环境要求:支持多种平台,可在Windows系列、Vista系统等多种操作系统下使用。2、开发目标中小企业人事管理系统的主要开发目标如下:(1)实现管理系统信息关系的系统化、规范化和自动化;(2)减少维护人员的工作量以及实现员工对信息的控制和管理。(3)方便查询信息及管理信息等;(4)通过网络操作,改善处理问题的效率,提高操作人员利用率;(5)考虑到员工多样性特点,要求界面简单,操作简便。3、设计原则本中小企业人事管理系统采用Java技术,MySQL数据库开发,充分保证了系统稳定性、完整性。 中小企业人事管理系统的设计与实现的设计思想如下: 1、操作简单方便、系统界面安全良好、简单明了的页面布局、方便查询相关信息。2、即时可见:对中小企业人事管理系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。 关键词:中小企业人事管理系统,springboot框架 MySQL数据库 Java技术

外汇EA_mt4双均线交易_mt4双均线ea_外汇EA_

MT4双均线交叉金叉死叉,外汇EA

java 获取文件大小 mb_java 获取文件大小

java 中如何获取文件的大小呢?有两种方式方式一:使用File 的length()方法;方式二:使用FileInputStream的available()方法;实例:@Testpublic void test01() throws IOException {String filepath = "d:\\bin\\pushpoxy-0.0.1-SNAPSHOT.jar";System.out.pr...

weixin_39633774的博客 1348

GBT 18290.2(IEC 60352-2 中文)-2015 无焊连接 第2部分:压接连接一般要求、试验方法和使用导则.rar

GBT 18290.2(IEC 60352-2 中文)-2015 无焊连接 第2部分:压接连接一般要求、试验方法和使用导则.rar

java获取文件大小有偏差_java 获取文件大小

java 中如何获取文件的大小呢?有两种方式方式一:使用File 的length()方法;方式二:使用FileInputStream的available()方法;实例:@Testpublic void test01() throws IOException {String filepath = "d:\\bin\\pushpoxy-0.0.1-SNAPSHOT.jar";System.out.pr...

weixin_34999698的博客 1066

传奇多功能脚本编辑器_编辑器_firmwkb_传奇脚本_传奇脚本开发_传奇功能脚本_

传奇多功能脚本编辑器 做版本的利器 节省时间 方便效率

java几种获取文件大小的方法以及使用场景

long fileSize = file.length(); int fileSizeInt = fis.available(); long fileSize = fis.getChannel().size(); 其中: File file = File("文件路径"); FileInputStream fis = new FileInputStream(file); 测试一下这三种常用...

cn_lyg的博客 7038

java取文件大小_【转】Java中获取文件大小的正确方法

本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法;另外一种是使用FileInputStream的available()方法,当I...

weixin_35851240的博客 373

Java中获取文件大小的正确方法

本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法;另外一种是使用FileInputStream的available(

u010450065的专栏 1029

Java获取文件大小方式

版权声明:本文为博主原创文章,更多博文请访问:http://blog.csdn.net/chaijunkun,未经博主允许不得转载。 本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。 今天写代码时

eriz程序之路 1789

获取文件大小

本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法;另外一种是使用FileInputStream的availa...

weixin_30722589的博客 73

inputStream.available()方法获取文件字节大小不对的问题

背景介绍:项目中有一个创建合同数据的接口,里面包含了上游系统的文件的url,系统中用URL进行请求文件地址。 代码如下: URL url = new URL(urlAddress); URLConnection uc = url.openConnection(); if (BooleanUtils.isTrue(isNeedHeaders)) { setURLHeaderInfo(uc); } map.put("inputStream", uc.getInputStream()); map.p

weixin_42590506的博客 6690

上游系统生成文件过大导致本系统读取文件时内存不足问题

就在前段时间,上游系统给我生成了一个文件,200多个G,我这8G内存的小心脏哪能承受的起,当场休克。 然后我痛定思痛,我决定要对他进行制裁,校验他生成的文件,超过1个G的我就不读了,直接抛异常给他看。 然后我就想啊,加一个读取文件大小的方法不就好了,然后在网上随便看了一下,发现有三种方式可以读取文件大小file.lenth(),FileInPutStream的.available()方法和FileChannel的getChannel().size方法,最后一个我都么得用过,然后三者的区别大概就是,13返

qq_23328747的博客 362
上一篇: 使用HttpClient爬取国内疫情数据
下一篇: 什么是JNDI?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值