首页 > 其他分享 >浅析Flie类getAbsolutePath()方法

浅析Flie类getAbsolutePath()方法

时间:2023-10-31 14:35:11浏览次数:31  
标签:返回 getAbsolutePath 路径 磁盘 Flie path 浅析 pl

开发中,常常需要上传文件,并将文件存于远程服务器(如minio)或者本地,当存于本地时对存储路径的指定是常见的问题。
当然,你可以在本地写死静态资源路径,如"D:\static\fileUpload\img",但这样只能适用于你的计算机,如果换一个人,他的电脑可能不是D盘而是E盘,如果是Linux环境,甚至没有D、E盘,导致项目可移植性差,不利于团队开发和部署,因此我们需要一个统一的获取存储路径的方法,下面就介绍下File.getAbsolutePath()方法。
首先我定义了以下四种路径,调用getAbsolutePath()后的返回结果如下:

tip:absPath0和absPath4马赛克部分为当前项目目录
进入getAbsolutePath(),其背后执行的逻辑如下:

关注f.getPrefixLength()方法,该方法会计算给定路径中第一个字母前的字符数,然后根据不同的pl长度返回不同的路径。
当pl为0时,为完全相对路径,返回当前项目的目录,并拼接上path;
当pl为1时,即/User/**,为磁盘(驱动器)相对路径,返回当前项目所在的磁盘根目录,并拼接上path;
当pl为2时,并且路径的第一个字符是斜杠(slash),那么直接返回该路径;
当pl为3时,即D:/,为绝对路径,直接返回path;
当pl为2时,即D:,会返回当前项目所在的磁盘根目录,并拼接上D:后的path
tip:pl为2时,"//"和当前项目磁盘根目录 + :能返回正确的路径,否则返回的路径会不可用,这里需要大家多测试测试。

了解了该方法后,做本地资源文件的上传存储,以及下载取路径等,都可以不用指定绝对路径,而是让系统根据配置的相对路径(即以“/”开头),获取到当前项目的绝对路径,这样就增强了项目的可移植性,不用每次都手动修改路径,并且也能适用于linux。

标签:返回,getAbsolutePath,路径,磁盘,Flie,path,浅析,pl
From: https://www.cnblogs.com/lhcc924/p/17800165.html

相关文章

  • 浅析Redis大Key
    一、背景在京东到家购物车系统中,用户基于门店能够对商品进行加车操作。用户与门店商品使用Redis的Hash类型存储,如下代码块所示。不知细心的你有没有发现,如果单门店加车商品过多,或者门店过多时,此Key就会越来越大,从而影响线上业务。userPin:{storeId:{门店下加车的所有商品......
  • ORCA优化器浅析——DXLToPlStmt ForeignScan
    有如下两种类型CDXLNode,通过对应的函数将CDXLNode转为对应的Plan:EdxlopPhysicalForeignScan--》TranslateDXLTblScanEdxlopPhysicalDynamicForeignScan--》TranslateDXLDynForeignScan其中比较重要的函数是ProcessDXLTblDescr【translatetabledescriptorintoarangetablee......
  • ORCA优化器浅析——DXLToPlStmt[CTranslatorDXLToPlStmt]
    如上图所示是将plan_dxl转为plan_stmt的主入口函数。其主要工作就是创建plan_id_generator、motion_id_generator、param_id_generator和table_list、subplans_list,并将其设置到CContextDXLToPlStmtdxl_to_plan_stmt_ctxt中供后续流程调用;初始化CTranslatorDXLToPlStmt类,形参为MD......
  • 倾斜摄影三维模型的根节点合并注意事项浅析
    倾斜摄影三维模型的根节点合并注意事项浅析 倾斜摄影三维模型的根节点合并是构建高精度、真实感和稳定性的三维模型的关键步骤之一。在进行根节点合并时,需要注意以下几个重要的事项,以确保合并的准确性和可靠性。首先,准确的相机标定是进行根节点合并的基础。相机标定是确定相......
  • 浅析5种常见的RAID技术
    RAID RAID(RedundantArrayofIndependentDisks)全称为独立磁盘冗余阵列,简称为磁盘阵列。 RAID是指利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组的技术,目的为提升性能或资料冗余,或是两者同时提升 最常用的五种RAID为RAID0、RAID1、RAID2、RAID5、......
  • 浅析SpringBoot加载配置的6种方式
    从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但就是这么常用的功能,仍然有很多开发者抓狂~今天带大家简单回顾一下这六种的使用方式:说明Environment对象Environment是springboot核心的环境配置接口,它提供了简单的方法来访问应用程序属性,包括系统属......
  • 浅析 es 查询文档的过程
    本文从一个示例入手,从代码层面分析elasticsearch查询文档的完整过程。新建索引cn-msg,设置3分片,1副本PUTlocalhost:9200/cn-msg{"settings":{"number_of_shards":3,"number_of_replicas":1}}写入文档POSTlocalhost:9200/cn-msg/_doc{"messag......
  • 浅析高铁客运服务质量与旅客态度——LW
    目 录1 绪论 11.1研究目的及意义 11.2研究内容 11.3研究方法 22 高铁客运服务质量的现状以及旅客心理需求对其影响 22.1高铁客运服务质量的现状 22.1.1客运设施硬件投入方面 22.1.2服务理念方面 32.2旅客心理需求对于客运服务质量的影响 32.2.1职业的影响 32.2......
  • 浅析高压开关配电室SF6环境监测系统的设计
    摘要:介绍了高压开关配电室SF6环境监测系统的组成、主要功能、工作原理及设计思想。系统应用电化学SF6浓度传感器,采用热裂解-电化学复合检测技术对高压开关配电室环境中SF6浓度实时进行监测,同时监测氧气含量、温度、湿度等参数,并且当配电室环境中SF6浓度、氧气含量超过标准时,自......
  • 飞管飞控系统仿真应用探究与浅析
    ​数字孪生技术是对真实物理实体的虚拟映射与数字化信息的应用再造,因其在产品生产制造与技术运用过程中,可将物理世界和数字世界进行实时交汇与良好互动的特性越来越受到普遍关注与广泛应用。据统计,2021年全球数字孪生市场规模为约500亿元,仍是蓝海市场。预计到2025年,全球数字孪生市......