spring中獲取資源的方式一共有以下四種:
通過resource介面獲取資源
通過resourceloader介面獲取資源
將resource注入到bean中的方式獲取資源
下面是對每種方式的詳細講解 :
resource介面的實現類有:
實現類
說明classpathresource
通過類路徑獲取資源檔案
filesystemresource
通過檔案系統獲取資源
urlresource
通過url位址獲取資源
bytearrayresource
獲取位元組陣列封裝的資源
servletcontextresource
獲取servletcontext環境下的資源
inputstreamresource
取輸入流封裝的資源
resource介面繼承了inputstreamsource介面,inputstreamsource介面中有乙個方法:getinputstream(),所以彙總起來,resource介面中共有以下方法:
exists()
判斷資源是否存在,true表示存在。
isreadable()
判斷資源的內容是否可讀。需要注意的是當其結果為true的時候,其內容未必真的可讀,但如果返回
isopen()
判斷當前resource代表的底層資源是否已經開啟,如果返回true,則只能被讀取一次然後關閉以避免資源洩露;該方法主要針對於inputstreamresource,實現類中只有它的返回結果為true,其他都為false
geturl()
返回當前資源對應的url。如果當前資源不能解析為乙個url則會丟擲異常。如bytearrayresource就不能解析為乙個url。
geturi()
返回當前資源對應的uri。如果當前資源不能解析為乙個uri則會丟擲異常。
getfile()
返回當前資源對應的file。
contentlength()
返回當前資源內容的長度。
lastmodified()
返回當前resource代表的底層資源的最後修改時間。
createrelative()
根據資源的相對路徑建立新資源。[預設不支援建立相對路徑資源]
getfilename()
獲取資源的檔名。
getdescription()
返回當前資源底層資源的描述符,通常就是資源的全路徑(實際檔名或實際url位址)。
getinputstream()
獲取當前資源代表的輸入流。除了inputstreamresource實現類以外,其它resource實現類每次呼叫getinputstream()方法都將返回乙個全新的inputstream。
演示**:
public class resourcetest
//判斷資源檔案是否可讀
if (resource.isreadable())
//判斷當前resource代表的底層資源是否已經開啟
if (resource.isopen())
system.out.println(resource.geturl());//獲取資源所在的url
system.out.println(resource.geturi());//獲取資源所在的uri
resource.getfile();//返回當前資源對應的file。
system.out.println(resource.contentlength());//輸出內容長度
system.out.println(resource.lastmodified());//返回當前resource代表的底層資源的最後修改時間。
resource.createrelative("myfile");//根據資源的相對路徑建立新資源。[預設不支援建立相對路徑資源]
system.out.println(resource.getfilename());//獲取資源檔名
system.out.println(resource.getdescription());
//獲取當前資源代表的輸入流
if (resource.isreadable())
}/**使用filesystemresource獲取資源**/
@test
public void testfilesystem() throws ioexception
/**使用urlresource獲取資源**/
@test
public void testurl() throws malformedurlexception
/**使用bytearrayresource獲取位元組陣列封裝的資源**/
@test
public void testbytearray() throws ioexception
/**使用inputstreamresource獲取輸入流封裝的資源。針對於輸入流的resource,其getinputstream()方法只能被呼叫一次。**/
@test
public void testinputstream() throws exception
}
spring框架為了更方便的獲取資源,盡量弱化程式設計師對各個resource介面的實現類的感知,定義了另乙個resourceloader介面。該介面的getresource(string location)方法可以用來獲取資源。它的defaultresourceloader實現類可以適用於所有的環境,可以返回classpathresource、urlresource等。
resourceloader在進行載入資源時需要使用字首來指定需要載入:「classpath:path」表示返回classpathresource,「http://path」和「file:path」表示返回urlresource資源,如果不加字首則需要根據當前上下文來決定,defaultresourceloader預設實現是載入classpath資源。
示例**:
@test
public void testresourceloader()
}
public void resource() throws ioexception }
配置xml檔案:
測試類:
public static void main(string args) catch (ioexception e)
}} 通過依賴注入的方式把resource注入到bean中。
示例**:
public class myresource
public void resource() throws ioexception
}
配置spring-resource xml檔案:
classpath:test.txt
測試類:
public static void main(string args) catch (ioexception e)
}} 測試結果為:
Spring Resource載入資源
在spring內部,針對於資源檔案有乙個統一的介面resource表示。其主要實現類有classpathresource filesystemresource urlresource bytearrayresource servletcontextresource和inputstreamresour...
NSSpeechSynthesizer 文字變語音
nsspeechsynthesizer 是 foundation中的乙個類,這個類可以方便的在cocoa應用程式中新增 文字到語言 功能。開發者可以使用這個類向ios 引用程式中新增類似功能。效果圖如下 截圖 speechutterance引數說明 utterance.voice 語系 不區分大小寫...
FileSystemWatcher判斷檔案複製完成
使用 filesystemwatcher 監視指定目錄中的更改。可監視指定目錄中的檔案或子目錄的更改。該元件可以監視本地計算機 網路驅動器或遠端計算機上的檔案。可監視目錄或檔案中的若干種更改。例如,可監視檔案或目錄的 attributes lastwrite 日期和時間或 size 方面的更改。通過...