日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

外部资源获取

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外部资源获取 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

處理外部資源是很繁瑣的事情,我們可能需要處理URL資源、File資源資源、ClassPath相關(guān)資源、服務(wù)器相關(guān)資源(JBoss AS 5.x上的VFS資源)等等很多資源。因此處理這些資源需要使用不同的接口,這就增加了我們系統(tǒng)的復(fù)雜性;而且處理這些資源步驟都是類似的(打開(kāi)資源、讀取資源、關(guān)閉資源),因此如果能抽象出一個(gè)統(tǒng)一的接口來(lái)對(duì)這些底層資源進(jìn)行統(tǒng)一訪問(wèn),是不是很方便,而且使我們系統(tǒng)更加簡(jiǎn)潔,都是對(duì)不同的底層資源使用同一個(gè)接口進(jìn)行訪問(wèn)。

?????? Spring 提供一個(gè)Resource接口來(lái)統(tǒng)一這些底層資源一致的訪問(wèn),而且提供了一些便利的接口,從而能提供我們的生產(chǎn)力。

? Resource接口

?????? Spring的Resource接口代表底層外部資源,提供了對(duì)底層外部資源的一致性訪問(wèn)接口。

?

java代碼: Java代碼??
  • public?interface?InputStreamSource?{??
  • ????InputStream?getInputStream()?throws?IOException;??
  • }??
  • ?

    java代碼: Java代碼??
  • public?interface?Resource?extends?InputStreamSource?{??
  • ???????boolean?exists();??
  • ???????boolean?isReadable();??
  • ???????boolean?isOpen();??
  • ???????URL?getURL()?throws?IOException;??
  • ???????URI?getURI()?throws?IOException;??
  • ???????File?getFile()?throws?IOException;??
  • ???????long?contentLength()?throws?IOException;??
  • ???????long?lastModified()?throws?IOException;??
  • ???????Resource?createRelative(String?relativePath)?throws?IOException;??
  • ???????String?getFilename();??
  • ???????String?getDescription();??
  • }??
  • ?

    ?

    1)InputStreamSource接口解析:

    ? ? ? ? ?getInputStream每次調(diào)用都將返回一個(gè)新鮮的資源對(duì)應(yīng)的java.io. InputStream字節(jié)流,調(diào)用者在使用完畢后必須關(guān)閉該資源。

    2)Resource接口繼承InputStreamSource接口,并提供一些便利方法:

    ? ? ? ? ?exists返回當(dāng)前Resource代表的底層資源是否存在,true表示存在。

    ? ? ? ? ?isReadable返回當(dāng)前Resource代表的底層資源是否可讀,true表示可讀。

    ? ? ? ? ?isOpen返回當(dāng)前Resource代表的底層資源是否已經(jīng)打開(kāi),如果返回true,則只能被讀取一次然后關(guān)閉以避免資源泄露;常見(jiàn)的Resource實(shí)現(xiàn)一般返回false。

    ? ? ? ? ?getURL如果當(dāng)前Resource代表的底層資源能由java.util.URL代表,則返回該URL,否則拋出IOException。

    ? ? ? ? ?getURI如果當(dāng)前Resource代表的底層資源能由java.util.URI代表,則返回該URI,否則拋出IOException。

    ? ? ? ? ?getFile如果當(dāng)前Resource代表的底層資源能由java.io.File代表,則返回該File,否則拋出IOException。

    ? ? ? ? ?contentLength返回當(dāng)前Resource代表的底層文件資源的長(zhǎng)度,一般是值代表的文件資源的長(zhǎng)度。

    ? ? ? ? ?lastModified返回當(dāng)前Resource代表的底層資源的最后修改時(shí)間。

    ? ? ? ? ?createRelative用于創(chuàng)建相對(duì)于當(dāng)前Resource代表的底層資源的資源,比如當(dāng)前Resource代表文件資源“d:/test/”則createRelative(“test.txt”)將返回表文件資源“d:/test/test.txt”Resource資源。

    ? ? ? ? ?getFilename返回當(dāng)前Resource代表的底層文件資源的文件路徑,比如File資源“file://d:/test.txt”將返回“d:/test.txt”,而URL資源http://www.javass.cn將返回“”,因?yàn)橹环祷匚募窂健?/p>

    ? ? ? ? ?getDescription返回當(dāng)前Resource代表的底層資源的描述符,通常就是資源的全路徑(實(shí)際文件名或?qū)嶋HURL地址)。

    ?

    Resource接口提供了足夠的抽象,足夠滿足我們?nèi)粘J褂谩6姨峁┝撕芏鄡?nèi)置Resource實(shí)現(xiàn):ByteArrayResource、InputStreamResource 、FileSystemResource 、UrlResource 、ClassPathResource、ServletContextResource、VfsResource等。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/doudouxiaoye/p/5779786.html

    總結(jié)

    以上是生活随笔為你收集整理的外部资源获取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。