电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java獲取文件路徑常用方法解析

瀏覽:2日期:2022-08-24 14:19:58

1. 前言

Java 開(kāi)發(fā)中我們經(jīng)常要獲取文件的路徑,比如讀取配置文件等等。今天我們就關(guān)于文件的路徑和如何讀取文件簡(jiǎn)單地探討一下。

2. 文件的路徑

文件的路徑通常有 相對(duì)路徑 與 絕對(duì)路徑。

2.1 相對(duì)路徑

以當(dāng)前文件為基準(zhǔn)進(jìn)行一級(jí)級(jí)目錄指向被引用的資源文件。在 Java 代碼中以當(dāng)前運(yùn)行的代碼所在的位置為參照位置,只要被引用的文件相對(duì)于引用的文件的位置不變就可以被讀取到。一旦改變相對(duì)位置就無(wú)法被讀取到。

2.2 絕對(duì)路徑

文件在文件系統(tǒng)中真正存在的路徑,是指從硬盤(pán)的根目錄(Windows為盤(pán)符)開(kāi)始,進(jìn)行一級(jí)級(jí)目錄指向文件(從根目錄一層層讀寫(xiě))。絕對(duì)路徑顧名思義就是絕對(duì)的地址,就像你只要告訴別人你家的門(mén)牌號(hào),他就能找到你家。而不是相對(duì)位置你告訴他在老王家的隔壁一樣。

2.3 路徑速記符

我們經(jīng)常看到一些文件目錄路徑使用一些符號(hào)來(lái)簡(jiǎn)寫(xiě),這里有必要總結(jié)一下(以類 Unix系統(tǒng)為例):

標(biāo)識(shí)符 說(shuō)明 ../ 表示當(dāng)前文件所在的目錄的上一級(jí)目錄 ./ 表示當(dāng)前文件所在的目錄 / 表示根目錄 ~ 當(dāng)前用戶目錄, mac 下為 /Users/username,而 win10下為c:usersusername

Windows 下基本將 / 改為 即可。

3. Java 中讀取文件

我們先來(lái)聲明一個(gè)測(cè)試路徑:

foo|_src| |_Test.java| |_app.yml

其中 Test.java 用來(lái)編寫(xiě)讀取 app.yml 文件的邏輯。Java 中通過(guò)java.io.File 來(lái)進(jìn)行文件操作。并且提供了以下三個(gè)方法來(lái)獲取文件的路徑。

3.1 getPath

該方法返回文件抽象路徑名的字符串形式。實(shí)際上就是傳遞給 File 構(gòu)造函數(shù)的路徑名。

因此,如果 File 對(duì)象是使用相對(duì)路徑創(chuàng)建的,則返回的值也將是相對(duì)路徑。如果是絕對(duì)路徑就返回絕對(duì)路徑。

File file = new File('./app.yml');# 輸出 path = ./app.ymlSystem.out.println('path = ' + file.getPath());

# 如果為絕對(duì)路徑File file = new File('/Users/dax/IdeaProjects/foo/src/app.yml');# 輸出 path = path = /Users/dax/IdeaProjects/foo/src/app.ymlSystem.out.println('path = ' + file.getPath());

3.2 getAbsolutePath

該方法返回文件的絕對(duì)路徑。請(qǐng)注意!這里是有大坑的。如果你的文件在 Java 工程內(nèi),路徑是按照編譯后的路徑計(jì)算的。

File file = new File('./app.yml');# absolutePath = /Users/dax/IdeaProjects/foo/./app.ymlSystem.out.println('absolutePath = ' + absolutePath);

同時(shí)我們發(fā)現(xiàn)該方法只解析當(dāng)前目錄(上面代碼所在的目錄)的相對(duì)路徑,如果初始化中的路徑包含了 2.3 章節(jié) 中的 速記符 ,速記符 將不會(huì)被解析。

因?yàn)樗儆浄拇嬖冢粋€(gè)文件在文件系統(tǒng)中的 絕對(duì)路徑 可以有很多個(gè)。

3.3 getCanonicalPath

速記符 不被解析有時(shí)候是很痛苦的事,我們可能需要知道具體的路徑。getCanonicalPath() 方法解決了這個(gè)問(wèn)題。

File file = new File('./app.yml');# canonicalPath = /Users/dax/IdeaProjects/foo/app.ymlSystem.out.println('canonicalPath = ' + file.getCanonicalPath());

由于getCanonicalPath()讀取的是文件系統(tǒng),因此會(huì)降低性能。如果我們確定沒(méi)有使用速記符,并且驅(qū)動(dòng)器號(hào)大小寫(xiě)已標(biāo)準(zhǔn)化(如果使用Windows OS),我們應(yīng)該首選使用getAbsoultePath(),除非你的項(xiàng)目中必須使用 getCanonicalPath()。

規(guī)范路徑(不包含速記符)對(duì)于一個(gè)固定位置的文件來(lái)說(shuō)是唯一的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 智能终端_RTU_dcm_北斗星空自动化科技| 衬氟旋塞阀-卡套旋塞阀-中升阀门首页 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 苏州柯瑞德货架-仓库自动化改造解决方案 | 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器| 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 上海道勤塑化有限公司| 三轴曲线机-端子插拔力试验机|华杰仪器| 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶| 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 铣床|万能铣床|立式铣床|数控铣床|山东滕州万友机床有限公司 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 |