国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot項目實戰之加載和讀取資源文件

SpringBoot項目實戰之加載和讀取資源文件

2022-02-28 13:16看山 Java教程

在項目的開發中,我們知道的是SpringBoot框架大大減少了我們的配置文件,但是還是留下了一個application.properties文件讓我們可以進行一些配置,下面這篇文章主要給大家介紹了關于SpringBoot項目實戰之加載和讀取資源文件的相關資料,需要

本文聊一聊在 SpringBoot 應用中,訪問加載類路徑(classpath)中的文件內容的多種方法。

通過Resource接口

Resource接口抽象出一種更底層的方式管理資源,可以實現通過統一的方式處理各類文件資源。下面是幾種獲取資源實例的方法。

手動加載

訪問類路徑中的文件,我們可以直接使用ClassPathResource加載內容,比如:

?
1
new ClassPathResource("data/resource-data.txt");

默認情況下,ClassPathResource會在線程的上下文類加載器和默認系統類加載器之間進行選擇,以刪除樣板文件。我們也可以直接指定類加載器,比如:

?
1
new ClassPathResource("data/resource-data.txt", this.getClass().getClassLoader());

或者是通過指定類的類加載器:

?
1
new ClassPathResource("data/resource-data.txt", Employee.class.getClassLoader());

從Resource對象,我們可以很容易的將其轉換為InputStream或File對象。

上面說的方式都是相對于類路徑的地址。如果想要指定某個類的相對路徑,我們和可以通過指定具體類來定義,比如:

?
1
new ClassPathResource("../../../data/resource-data.txt", Example.class).getFile();

這樣就是相對于Example的相對路徑了。在實際使用中,不太建議通過類獲取其相對路徑的文件。這樣會將類與文件的相對坐標綁定,如果修改了類的包路徑,但是忘記修改文件位置,就會出現錯誤。而且,大家現在一般是使用 Maven 之類的包管理器管理,可以直接在resources目錄中定義配置文件,使用類路徑的相對地址加載文件即可。

通過@Value自動轉換

我們還可以使用@Value直接注入Resource對象,比如:

?
1
2
@Value("classpath:data/resource-data.txt")
Resource resourceFile;

@Value還能支持其他的加載協議,比如file:或url:。

通過ResourceLoader加載

我們還能使用注入ResourceLoader來實現資源的懶加載,比如,先注入ResourceLoader實例:

?
1
2
@Autowired
ResourceLoader resourceLoader;

然后在我們需要的地方,通過ResourceLoader實例加載資源:

?
1
resourceLoader.getResource("classpath:data/resource-data.txt");

在 Spring 中,ApplicationContext實現了ResourceLoader,所以,我們也可以直接通過ApplicationContext實例加載資源,比如:

?
1
2
3
4
5
ApplicationContext context;
 
public Resource loadEmployeesWithApplicationContext() {
    return context.getResource("classpath:data/resource-data.txt");
}

使用ResourceUtils加載資源

在 Spring 內部,還提供了一個工具類ResourceUtils,可以很方便的獲取類路徑中額資源。但是通過這個類的 Javadoc 可以看到,這個類主要是在 Spring 內部使用,也就是說,不太推薦這種用法。不過我們可以了解一下:

?
1
2
3
4
5
public File loadEmployeesWithSpringInternalClass()
  throws FileNotFoundException {
    return ResourceUtils.getFile(
      "classpath:data/resource-data.txt");
}

我們可以了解其內部實現,但是還是建議使用其他更加標準的做法。

讀取資源中的內容

上面都是通過各種方式獲取了Resource資源,接下來我們就聊聊如果獲取資源對象的數據。

比如,我們的資源文件內容如下:

站點:https://www.howardliu.cn
作者:看山
公號:看山的小屋

關注公號得福利

通過File對象讀取

我們可以使用getFile方法得到File實例,就可以用讀取File對象的方式讀取文件了,比如:

?
1
2
3
@Test
File resource = new ClassPathResource("data/resource-data.txt").getFile();
String content = new String(Files.readAllBytes(resource.toPath()));

但是這種方式不適用與讀取 jar 包中的文件,鑒于現在很多應用都是通過 FatJar 方式部署,我們還需要找找其他方式。

通過InputStream對象讀取

File對象不適合 jar 包中資源讀取的原因在于文件路徑格式不一樣,所以我們可以直接將資源內容讀取為流的形式,這樣就沒有文件路徑的問題了。比如:

?
1
2
3
4
InputStream resource = new ClassPathResource("data/resource-data.txt").getInputStream();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource))) {
    String content = reader.lines().collect(Collectors.joining("\n"));
}

讀取完畢。

文末總結

本文從加載資源、讀取內容兩個方法講解,給出了多種讀取方式。

到此這篇關于SpringBoot項目實戰之加載和讀取資源文件的文章就介紹到這了,更多相關SpringBoot加載和讀取資源文件內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/liuxinghao/article/details/120930968

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 在线国产视频 | 免费看黄色一级 | 亚洲伊人久久综合 | 亚洲欧美国产精品专区久久 | 久草电影在线观看 | 国产一级黄片毛片 | 亚洲色图网站 | 日本一区二区三区精品视频 | 国产欧美自拍 | 欧美日韩在线免费 | 成人中文字幕在线观看 | 亚洲精品在线免费看 | 日本三级中国三级99人妇网站 | 午夜爽爽 | 人人九九精 | 91在线视频观看 | 亚洲一区二区三区中文字幕 | 国产精品久久久久久久久免费桃花 | 国产精品免费自拍 | 久久久99精品免费观看 | 97在线观看 | 天天精品视频免费观看 | 自拍偷拍亚洲一区 | 久久久久久九九九 | 91精品久久久久久久久久 | 日日骚网 | 色av综合| 一级特黄bbbbb免费观看 | 欧美福利在线观看 | 精品成人av一区二区三区 | 国产婷婷色一区二区三区 | 黄在线免费观看 | www.色.com| 免费a级毛片大学生免费观看 | 日本久久综合 | 国产伦乱 | 国产一区二区三区在线免费观看 | 精品国产欧美一区二区三区成人 | 国产黄色a级 | av入口 | 黄免费|