Spring Resource檔案操作介面

2021-09-27 08:12:15 字數 3697 閱讀 1766

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 方面的更改。通過...