要了解怎樣運(yùn)用Android的外部存儲(chǔ)蒸其,首先我們理解一下相對(duì)路徑和絕對(duì)路徑
具體大家百度百科茵汰。
絕對(duì)路徑:絕對(duì)路徑是指書寫文件的完整路徑(比較好理解),如d:\test[Java](http://lib.csdn.net/base/java)\helloword.java朵逝,在該路徑下包含文件的完整路徑d:\test\java\以及文件名helloword.java,
使用該路徑可以唯一的找到一個(gè)文件,不會(huì)產(chǎn)生歧義坷襟,但是使用絕度路徑表示文件時(shí)有很大的局限性奸柬,不能再不同的操作系統(tǒng)下運(yùn)行,因?yàn)椴煌牟僮?br>
系統(tǒng)對(duì)文件路徑的表示方式可能是不同的婴程。
相對(duì)路徑:相對(duì)路徑并不是一個(gè)完整的路徑(注意“相對(duì)”二字廓奕,說明得有一個(gè)參照物),是指書寫文件的部分路徑档叔,如\test\java\helloworld.java桌粉,該路徑只包含文件的部分路徑\test\java和文件全名helloworld.java,部分路徑是指當(dāng)前路徑下的子路徑衙四,此時(shí)為此相對(duì)路徑的父路徑時(shí)d:\铃肯,所以完成路徑是d:\test\java\helloworld.java,如果換成e盤,完整路
徑就是e:.....传蹈,可以看出押逼,你并不知道這個(gè)文件在哪個(gè)盤,那么神奇的地方是怎樣根據(jù)這個(gè)殘缺的路徑找到文件惦界,當(dāng)然挑格,相對(duì)路徑的父路徑是誰,他就指向父路徑下此相對(duì)路徑的
文件沾歪,可以看出是必須有一個(gè)參照物漂彤,即父路徑,是相對(duì)于父路徑的路徑灾搏。完整應(yīng)該是父路徑\相對(duì)路徑\文件名显歧。如果你換了父路徑,而換了的父路徑并沒有這個(gè)相對(duì)路徑和文件
就有可能報(bào)null确镊,可以看出相對(duì)路徑時(shí)的靈活性非常強(qiáng)士骤。我們平時(shí)代碼中大多數(shù)用到的也是相對(duì)路徑,或相對(duì)url(關(guān)于url請(qǐng)移步)蕾域,畢竟名字太長并不是容易記得住的拷肌。
雖然在大多數(shù)情況下我們用到的時(shí)相對(duì)路徑,但在Android中旨巷,我們大多數(shù)情況下用的卻是絕對(duì)路徑巨缘,那么,這是為什么呢采呐。
原因:普通的java項(xiàng)目創(chuàng)建于服務(wù)器(pc也可以看做服務(wù)器127.0.0.1)而運(yùn)行于服務(wù)器若锁,所以父目錄(即相對(duì)路徑參照物)就是相對(duì)路徑的參照物,所以在自己的服務(wù)器可以操縱自己的文件目錄而不會(huì)出現(xiàn)null的問題斧吐。
而Android項(xiàng)目創(chuàng)建于電腦而運(yùn)行與手機(jī)又固,項(xiàng)目的參照物是電腦下的項(xiàng)目路徑仲器,但在換到手機(jī)上相對(duì)路徑的參照物還是電腦,所以這是就會(huì)報(bào)null的錯(cuò)誤仰冠,這就是Android必須是絕對(duì)路徑的原因乏冀。