JAVA File的創建及相對路徑絕對路徑

JAVA?File的創建及相對路徑絕對路徑

轉載自?http://blog.sina.com.cn/s/blog_9386f17b0100w2vv.html

File f = new File("D:/test/mytest.txt");//當執行這句話后在內存的棧空間存在一個f的應用,在堆空間里存在一個mytest.txt對象。注意

這個對象只含有文件的屬性(如大小,是否可讀,修改時間等),不包含文件的內容,所以length=0。當我們想執行對文件的操作的時候,這個時

候抽象路徑起作用了,比如我們想執行f.createNewFile()命令時,虛擬機會將抽象路徑轉化為實際的物理路徑,到這個轉化后的物理路徑(此時

是硬盤)下進行文件的創建。這時,如果在你的D盤沒有test文件夾,那么不好意思啦,程序就會拋異常,如果有test文件夾,就可以創建一個

mytest.txt文件了。能不能創建mytest.txt就在于這個文件上面有沒有test文件夾,這也就是抽象路徑在裝怪了。
如果想讓f引用在硬盤中把文件夾也創建出來怎么辦?用f.getParentFile()求出mytest.txt上面的所有文件夾,然后在mkdirs()就搞定了。

-----------------------
-----------------------
File類是用來構造文件或文件夾的類,在其構造函數中要求傳入一個String類型的參數,用于指示文件所在的路徑.以前一直使用絕對路徑作為參

數,其實這里也可以使用相對路徑.使用絕對路徑不用說,很容易就能定位到文件,那么使用了相對路徑jvm如何定位文件的呢?

按照jdk Doc上的說法”絕對路徑名是完整的路徑名,不需要任何其他信息就可以定位自身表示的文件。相反,相對路徑名必須使用來自其他路

徑名的信息進行解釋。默認情況下,java.io 包中的類總是根據當前用戶目錄來分析相對路徑名。此目錄由系統屬性 user.dir 指定,通常是

Java 虛擬機的調用目錄.”

相對路徑顧名思義,相對于某個路徑,那么究竟相對于什么路徑我們必須弄明白.按照上面jdk文檔上講的這個路徑是”當前用戶目錄”也就是”

java虛擬機的調用目錄”.更明白的說這個路徑其實是我們在哪里調用jvm的路徑.舉個例子:

假設有一java源文件Example.java在d盤根目錄下,該文件不含package信息.我們進入命令行窗口,然后使用”d:”命令切換到d盤根目錄下,然后

用”javac Example.java”來編譯此文件,編譯無錯后,會在d盤根目錄下自動生成”Example.class”文件.我們在調用”java Example”來運行

該程序.此時我們已經啟動了一個jvm,這個jvm是在d盤根目錄下被啟動的,所以此jvm所加載的程序中File類的相對路徑也就是相對這個路徑的,即

d盤根目錄:D:\.同時” 當前用戶目錄”也是D:\.在System.getProperty(“user.dir”);系統變量”user.dir”存放的也是這個值.

我們可以多做幾次試驗,把”Example.class”移動到不同路徑下,同時在那些路徑下,執行”java Example”命令啟動jvm,我們會發現這個”當前

用戶目錄”是不斷變化的,它的路徑始終和我們在哪啟動jvm的路徑是一致的.

搞清了這些,我們可以使用相對路徑來創建文件,例如:

File file = new File(“a.txt”);

file.createNewFile();

假設jvm是在”D:\”下啟動的,那么a.txt就會生成在D:\a.txt;

此外,這個參數還可以使用一些常用的路徑表示方法,例如”.”或”.\”代表當前目錄,這個目錄也就是jvm啟動路徑.所以如下代碼能得到當前目

錄完整路徑:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);//D:\

最后要說說在eclipse中的情況:

Eclipse中啟動jvm都是在項目根路徑上啟動的.比如有個項目名為blog,其完整路徑為:D:\work\IDE\workspace\blog.那么這個路徑就是jvm的啟

動路徑了.所以以上代碼如果在eclipse里運行,則輸出結果為” D:\work\IDE\workspace\blog.”

Tomcat中的情況.

如果在tomcat中運行web應用,此時,如果我們在某個類中使用如下代碼:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);

那么輸出的將是tomcat下的bin目錄.我的機器就是” D:\work\server\jakarta-tomcat-5.0.28\bin\.”,由此可以看出tomcat服務器是在bin目

錄下啟動jvm的.其實是在bin目錄下的” catalina.bat”文件中啟動jvm的.

轉載于:https://www.cnblogs.com/zlfly/p/4609710.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447931.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

腎有多好人就有多年輕 男女通用的補腎秘方

每天都堅持喝一碗,現在已經連續喝了三個多星期了,以前有好些白發的地方居然沒有復發,而且現在一根也沒有啊,我真的很開心。不僅白頭發不見了,而且皮膚變白皙和光滑了好多,氣色也比原來好了!好東西要大家分享…

Object.keys() Object.values()

Object.keys() //返回對象中各個鍵值對的鍵(key) Object.values() //返回對象中各個鍵值對的值(value) var obj { foo: "bar", baz: 42 };Object.keys(obj) // ["foo", "baz"]Object.values(obj) // ["ba…

vue 解決: *!!vue-style-loader!css-loader?{“sourceMap“:true}!../../../../vue-loader

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 問題描述 *!!vue-style-loader!css-loader?{“sourceMap”:true}!../../../../vue-loader/lib/style-compiler/index?{“vue”:true,…

計算機專業 程序員技術練級攻略(轉載)

程序員技術練級攻略轉載自: https://coolshell.cn/articles/4990.html 前言 你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場后哪怕沒有什么經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發&#xff…

35 歲之前不應該錯過的 30 本書

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 PS:在這個書目中,我不偏好的書會直接放到最后,所以不是按原文順序來。 1、《目送》 作者&#xff1a…

生活中意想不到的妙招

1、抹布變白 抹布是咱們家中最常見的東西,干家務絕對離不開它,擦桌椅板凳,擦灶臺,油煙機,浴室,電器等等,家里總需要準備很多抹布,最難清理的恐怕就是廚房的抹布了吧?因為總是和油污…

“ 紫手環的力量 ” :我想,美好的生活應該是自已造就的...

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 我想或許我可以試試這個方法: 其實 我是真的打算試試,最近總是會憂慮,或許我應該自已努力給自已造就…

通過界面生成時不存在的數據刷新界面引起的卡頓問題

今天遇到了一個問題,就是有一個界面,在生成時之前請求數據,在界面中通過schedule 與unschedule不停查看本地是否收到此數據(通過發起request的Id),當收到之后刷新。 然后就引起了一個問題。界面彈出是有動畫…

解決 VUE:[WDS] Errors while compiling. Reload prevented...- invalid expression: Unexpected token -- in

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 在網上找了個組件,直接把代碼放入自已的項目中報錯,提示信息如黑框中: 2. 此組件原碼就是這樣用的…

長壽的十個秘訣 至少選擇一個堅持實施

人人都想提高自己健康長壽的機率。下面的十個秘訣中,哪怕只選擇一個,然后堅持實施,若干年后你會發現已經受益無窮。 1、喝茶 喝茶,特別是喝綠茶,其中的抗氧化劑可以抵擋有害物質對你身體的傷害。喝茶被證明可以減壓…

vue中的slot插槽

1.無名插槽<body><div id"app">123</div><script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script type"text/javascript">//注冊組件Vue.component("my-component",{templ…

linux 上 日志中查異常,指定顯示異常前后日志內容

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 查異常cat -n abc.log |grep Exception|more如找到行數為&#xff1a;5201314行&#xff0c;再查看該行前后的異常信息cat -n abc.log |…

my40_MySQL鎖概述之意向鎖

本文在鎖概述的基礎上&#xff0c;通常實驗舉例&#xff0c;詳細地介紹了意向鎖的原理。 鎖范圍 全局鎖&#xff08;global lock&#xff09;表鎖&#xff08;table lock&#xff09;行鎖 (row lock) ROW LOCK的粒度LOCK_REC_NOG_GAP, record lock with out gap lockLOCK_GAP&…

C語言的整型溢出問題

整型溢出有點老生常談了&#xff0c;bla, bla, bla… 但似乎沒有引起多少人的重視。整型溢出會有可能導致緩沖區溢出&#xff0c;緩沖區溢出會導致各種黑客攻擊&#xff0c;比如最近OpenSSL的heartbleed事件&#xff0c;就是一個buffer overread的事件。在這里寫下這篇文章&…

石牌村中的美好 ...

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 看了下我這些天的吃的&#xff0c;好像天天是盒飯 ... 不過 2 葷 2 素 11 元&#xff0c;大概是城中村才會這么便宜吧 。 村里有很多…

警惕 十種短命的生活方式

“忙忙忙&#xff0c;忙到白了頭”。忙碌的白領階層在“金錢”與“健康”的物物交換中&#xff0c;損失掉的是什么呢? 究竟是什么在日復一日地蠶食白領們的生命? 危險方式1&#xff1a;極度缺乏體育鍛煉 在932名被調查者中&#xff0c;只有96人每周都固定時間鍛煉&#xff…

Thymeleaf 簡介、教程

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Thymeleaf是一個適用于Web和獨立環境的現代服務器端Java模板引擎。 Thymeleaf的主要目標是為您的開發工作流程帶來優雅的自然模板 - 可…

HDU 6682 Make Rounddog Happy

題意&#xff1a;給你一個集合&#xff0c;求它的所有子集的子集和中數字4出現了多少次 例如 4 4 4 44 44 中4(1)&#xff0c;4(2)&#xff0c;44(3)&#xff0c;44(4)&#xff0c;48(1,3)&#xff0c;48(1,4)&#xff0c;48(2,3)&#xff0c;48(2,4)&#xff0c;總共有10個數字…

如期而至,GCC 4.9.0正式版發布!

摘要&#xff1a;GCC是一套由GNU開發的編程語言編譯器。近日&#xff0c;GCC 4.9.0發布&#xff0c;主要新特性包括&#xff1a;提升了C11和C14特性&#xff1b;診斷信息支持彩色顯示&#xff1b;移除mudflap運行時檢查器等。 如期而至&#xff0c;GCC 4.9.0發布&#xff0c;該…

2.9 go mod 之本地倉庫搭建

wikihttps://github.com/golang/go/wiki/Modules#how-to-prepare-for-a-release參考https://blog.csdn.net/benben_2015/article/details/82227338 go mod 之本地倉庫搭建----------------------------------------------------------------------------------------將當前項目…