1. 程式人生 > >在Spring Boot快捷地讀取檔案內容的若干種方式

在Spring Boot快捷地讀取檔案內容的若干種方式

引言: 在Spring Boot構建的專案中,在某些情況下,需要自行去讀取專案中的某些檔案內容,那該如何以一種輕快簡單的方式讀取檔案內容呢?
這裡寫圖片描述

基於ApplicationContext讀取

在Spring Bean中獲取ApplicationContext引用的方式:

 @Component 
 public class MyBean implement ApplicationContextAware {  
     private static ApplicationContext context;  
     public void setApplicationContext
(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } public static ApplicationContext getApplicationContext() { return context; } .......... }

關於如何動態注入ApplicationContext的方法,可以參見筆者之前的文章:動態注入Spring中的Bean例項快速指南

在獲取了ApplicationContext例項之後,就可以基於applicationContext動態讀取檔案內容了:

使用fileSystem

Resource resource = appContext.getResource(“file:d:\testing.jpg”);

使用url path

Resource resource = appContext.getResource(“url:http://www.test.com/testing.txt“);

基於classpath

Resource resource = appContext.getResource(“classpath:resources/common/test.txt”);
在獲取resource物件之後,就可以獲取file的物件,從而可以讀取檔案內容。

基於ResourceLoader

在Spring中專門提供了一個ResourceLoader的介面來方便進行classpath的路徑訪問。
基於Aware方式注入ResourceLoader,具體的方式如下:

  public class MyBean implements ResourceLoaderAware {
      private ResourceLoader resourceLoader;

    public void setResourceLoader(ResourceLoader resourceLoader) {
        this.resourceLoader = resourceLoader;
    }

    public Resource getResource(String location){
        return resourceLoader.getResource(location);
    }
    .......
  }

第二種方式為,直接基於@Bean的方式在Spring Boot中建立對應的例項,具體方式如下:

    .....
    @Bean
    public ResourceLoader createResourceLoader() {
        return new DefaultResourceLoader();
    }
    .....

以上兩種方式都可以實現ResourceLoader物件的建立。

在獲取ResourceLoader的物件例項之後,將可以基於如下方式來獲取配置資訊:

Resource resource = resourceLoader.getResource(“classpath:resources/config.xml”);

另外一種方式可以直接讀取檔案的內容:

String content = IOUtil.toString(resourceLoader.getResource(
“classpath:resources/test.txt”).getInputStream());

IOUtil是Apache common專案中的IO類庫包,可以通過以下方式來直接加入依賴:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

何為classpath

在Maven專案中,所有的resources檔案都將被複制到classes目錄下。classpath在tomcat專案中就是/classes,/lib和tomcat下的其他路徑。
對於開發者來說,一般就是classes所在目錄就是classpath路徑的起點和base path.

總結

古語有云:工欲善其事,必先利其器。好的工具和方法可以讓工作變得輕鬆,如魚得水,用更少的程式碼完成更多的任務,多總結多分析,多積累,才有效率的提升。
這裡寫圖片描述

關於我自己

這些技巧和總結都是來自於實際的工作,歡迎大家反饋和提出自己的意見。
文章也會同步發在今日頭條的頭條號上,搜尋 “程式加油站”,就可以找到。

相關推薦

Spring Boot快捷讀取檔案內容若干方式

引言: 在Spring Boot構建的專案中,在某些情況下,需要自行去讀取專案中的某些檔案內容,那該如何以一種輕快簡單的方式讀取檔案內容呢? 基於ApplicationContext讀取 在Spring Bean中獲取ApplicationConte

spring Bootspring boot獲取資源文件的三方式【兩情況下】

不用 ash 12c ica pla bsp foreach set 使用 首先聲明一點,springboot獲取資源文件,需要看是   1》從spring boot默認的application.properties資源文件中獲取   2》還是從自定義的資源文件中獲取

Spring Boot統一格式返回資料的幾方式

  有些時候呢,我們需要統一格式進行返回,之前可能會定義某個實體類在每個方法的響應都是用這個實體類然後包含響應值,其實spring呢,可以有挺多種無侵入的統一包裝方法。   第一種: @RestControllerAdvice public class ResponseHandler impleme

Spring Boot獲取前端頁面引數的幾方式總結

  Spring Boot的一個好處就是通過註解可以輕鬆獲取前端頁面的引數,之後可以將引數經過一系列處理傳送到後臺資料庫,前段時間正好用到,但是忘得差不多了,獲得的方式有很多種,這種東西不寫下來一段時間不用就忘得差不多了,感覺記性越來越差了呢,這裡稍微總結一下,

一行一行讀取檔案的兩方式

1)方式1 static void Main(string[] args) { using (StreamReader reader = new StreamReader("1.txt", Encoding.Default)) {

spring boot與thymeleaf頁面傳參兩方式

1.利用ModelAndView物件向頁面傳參 @RequestMapping("/index/{p}.html")public ModelAndView  index(@PathVariable i

Spring Boot中初始化資源的幾方式

  假設有這麼一個需求,要求在專案啟動過程中,完成執行緒池的初始化,加密證書載入等功能,你會怎麼做?如果沒想好答案,請接著往下看。今天介紹幾種在Spring Boot中進行資源初始化的方式,幫助大家解決和回答這個問題。CommandLineRunner定義初始化類 MyCommandL

spring學習之獲取xml檔案的兩方式

方法一:從classpath路徑載入 在類路徑下尋找配置檔案來例項化容器 ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"})

spring boot多環境配置檔案讀取不到的問題。

程式碼架構: 其中application.yaml中就三行程式碼: 作用是在IED啟動的時候指定當前環境。 但是其實我不是這麼做的,而是在idea中指定。 產生問題: 引入了一個自己寫的starter[jar包],jar包中配置了test環境的配置。但是專案啟動的時候指定了prof

Spring boot 如何通過配置檔案讀取定時器何時啟動配置

場景描述: 當開發完成一個需求後,需要區分線上和線下配置。定時任務也是這樣的,開發了一個需要每天十二點執行的定時器,但這也僅僅是線上要每天十二點執行,這對於測試來說,十分不方便,所以需要通過配置檔案來獲取配置的定時器執行時間。 啟動類中使用@EnableSch

Spring-boot讀取config配置檔案的兩方式

瞭解過spring-Boot這個技術的,應該知道Spring-Boot的核心配置檔案application.properties,當然也可以通過註解自定義配置檔案的資訊。 Spring-Boot讀取配置檔案的方式: 一.讀取核心配置檔案資訊application.p

Spring Boot 讀取配置檔案的幾方式

Spring Boot 讀取配置檔案的方式可以分為 1. 註解 2. 獲取 Spring Boot 的環境變數 來獲取配置檔案的資訊,其中註解的方式又有集中表現形式。 第一步:建立 Spring Boot 工程( Maven 工程新增 Spring B

Spring boot @Value註解讀取application.properties配置檔案中的屬性值

@Value註解引用application.properties配置檔案屬性值 @Value 註解載入屬性值的時候可以支援兩種表示式來進行配置, 如下所示: 一種是PlaceHolder 方式, 格式為${...}, 大括號內為PlaceHolder。 另

Spring Boot讀取配置檔案的幾方式

Spring Boot獲取檔案總的來說有三種方式,分別是@Value註解,@ConfigurationProperties註解和Environment介面。這三種註解可以配合著@PropertySource來使用,@PropertySource主要是用來指定具體的配置檔案。 ## @PropertySour

spring-boot-route(二)讀取配置檔案的幾方式

Spring Boot提供了兩種格式的配置檔案,分別是`properties` 和 `yml`。Spring Boot最大的特點就是自動化配置,如果我們想修改自動化配置的預設值,就可以通過配置檔案來指定自己伺服器相關的引數。 配置檔案集約管理了配置資訊,如果把配置引數寫到Java程式碼中,維護起來非常不方便

spring boot框架學習之重要註解3註解方式讀取外部資源配置文件

凱哥java java註解 本節主要內容:1:是用非註解方式怎麽獲取配置文件中的配置項2:使用註解實戰獲取外部properties文件配置項聲明:本文是《凱哥陪你學系列-框架學習之spring boot框架學習》中spring boot框架學習學前掌握之重要註解(3)-通過註解方式讀取外部資源配置文件

C++ 讀取檔案內容到指定型別的變數

#include <iostream> #include <fstream> #include <sstream> #include <string> using namespace std; int main(){ cout <<

C++ 讀取檔案內容到data 結構體 structure

#include <iostream> #include <fstream> #include <stdlib.h> using namespace std; typedef struct { int n; char *data; } BLOCK;

Spring Boot中注入配置檔案application.properties中的list 物件引數

例如要注入下列引數: dyn.spring.datasources[0].name=branchtadyn.spring.datasources[0].driverClassName=oracle.jdbc.OracleDriverdyn.spring.datasources[0].url=jdbc:ora

Java NIO使用Files類一行程式碼讀取檔案內容

Files類 Files 類是 java.nio 包中的用於操作檔案的類,提供了比 java.io.File 類更便捷的操作。 其中,Files類的 readAllBytes 方法提供了一個讀取所有位元組的方法,可以將讀取結果很方便地賦值給一個 String。 例如以下程式碼,可以用一行程式碼實