欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用springboot打包后的文件讀取方式

 更新時間:2021年08月18日 11:01:49   作者:DDF_YiChen  
這篇文章主要介紹了使用springboot打包后的文件讀取方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot打包后的文件讀取

在使用了springboot打包后的項目中,牽扯到項目目錄中文件讀取工作時,明明在開發(fā)時功能正常,但是一到發(fā)布到線上環(huán)境就會報文件找不到,路徑不存在的問題。

由于在開發(fā)過程中,文件就在我們本地目錄中存在,因此普通正常文件的讀寫功能不受影響,而一旦打包后,可能會由于我們自己的文件目錄放置原因一是沒有被正確打包到jar包中,第二個即使被打包進去,由于jar包并不會解壓到服務器中,因此如果我們按照正常的文件路徑去獲取文件的時候還是會報異常。

文件打包問題

首先是確認我們自己的文件有沒有被打包到jar包中,默認的如果文件在src/main/resources目錄下的時候是會打包的,但如果不在目錄中,我們可以通過在pom.xml中配置以下指明我們的資源文件所在。拿個mybatis的mapper.xml文件舉例,我們將沒有放到了java源碼目錄中了,則需要通過以下配置指定目錄所在

 <build>
     <resources>
         <resource>
             <directory>src/main/java</directory>
             <includes>
                 <include>**/*.xml</include>
             </includes>
         </resource>
     </resources>
 </build>

文件讀取問題

記住一個準則,凡是要通過路徑獲取文件的方法都會報錯,但是通過流的方式卻是可以工作的。我們拿spring提供的一個類org.springframework.core.io.ClassPathResource來解決讀取問題。

ClassPathResource classPathResource = new ClassPathResource(path);
InputStream inputStream = classPathResource.getInputStream();
// 流獲取到了就可以做自己想要的讀取操作了

但是還有一些情況,我們就是要獲取文件然后做一些操作,比如我需要通過文件構造RandomAccessFile對象然后來實現(xiàn)某些功能,當然我目前還沒發(fā)現(xiàn)通過流來構造這個對象的,所以不知道還有沒有別的方法。

這種情況先獲取到流然后重新生成一個新的文件,然后我們最終讀取的是我們復制的那個文件,而不對原始文件操作,這樣這個文件就是在真實路徑中存在的。舉個簡單的代碼例子,我們在src/main/resources下有一個test.txt文件,我們可以在要讀取文件(要保證只執(zhí)行一次)或者簡單粗暴在項目啟動的時候復制一下文件。

String path = "test.txt";
ClassPathResource classPathResource = new ClassPathResource(path);
// 我們要將文件復制到服務器的某個目錄
String targetPath = "/app/file/test.txt";
// 通過原始文件流復制文件
Files.copy(classPathResource.getInputStream(), Paths.get(targetPath ), StandardCopyOption.REPLACE_EXISTING);
// 然后通過復制的文件進行操作
new RandomAccessFile(targetPath, "r");

Springboot打包后讀取不到文件

SpringBoot部署后文件找不到的問題

項目引用了一個xml作為模板

在這里插入圖片描述

本地訪問文件的時候使用的方式比較直接

Document document = reader.read(ResourceUtils.getURL("classpath:").getPath() + "xmlTemplate.xml");

直接訪問classpath下的xmlTemplate,這種方式在本地運行的時候能取到文件,但是項目在打包再發(fā)布以后,問題就出來了…

在這里插入圖片描述

解決辦法1 失敗。。

在pom中的build中 直接配置resources

   <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
   </build>

這個配置的作用是告訴maven哪些文件需要被打進包里。這時我看了一眼打好的jar包,確實里面是有我的文件的,但是此時代碼報錯 找不到文件。

在這里插入圖片描述

解決辦法 2

換一種取文件的方式,因為已經(jīng)確定打好的包中是有文件的新的方式

        ClassPathResource resource = new ClassPathResource("xmlTemplate.xml");
        Document document = reader.read(resource.getInputStream());

解決了..

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • springboot的緩存技術的實現(xiàn)

    springboot的緩存技術的實現(xiàn)

    這篇文章主要介紹了springboot的緩存技術的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • java讀取excel圖片導入代碼示例(親測有效)

    java讀取excel圖片導入代碼示例(親測有效)

    在日常工作中,我們經(jīng)常要將一些照片插入到Excel表格中,這篇文章主要給大家介紹了關于java讀取excel圖片導入的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • SpringBoot+Docker+IDEA實現(xiàn)一鍵構建+推送、運行、同鏡像多容器啟動

    SpringBoot+Docker+IDEA實現(xiàn)一鍵構建+推送、運行、同鏡像多容器啟動

    這篇文章主要介紹了SpringBoot+Docker+IDEA實現(xiàn)一鍵構建+推送、運行、同鏡像多容器啟動,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • SpringBoot靜態(tài)資源配置原理(源碼分析)

    SpringBoot靜態(tài)資源配置原理(源碼分析)

    這篇文章主要介紹了SpringBoot靜態(tài)資源配置原理(源碼分析),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java反射技術詳解及實例解析

    Java反射技術詳解及實例解析

    這篇文章主要介紹了Java反射技術詳解及實例解析,反射可以說是Java中最強大的技術了,它可以做的事情太多太多,很多優(yōu)秀的開源框架都是通過反射完成的。如果對JAVA感興趣來可以學習一下
    2020-07-07
  • SpringBoot 集成 activiti的示例代碼

    SpringBoot 集成 activiti的示例代碼

    這篇文章主要介紹了SpringBoot 集成 activiti的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java數(shù)組實例練習題整理

    Java數(shù)組實例練習題整理

    在本篇文章中小編給各位分享的是關于Java數(shù)組實例練習題以及相關代碼整理,有需要的朋友們跟著學習下。
    2019-07-07
  • SpringBoot?自定義注解之脫敏注解詳解

    SpringBoot?自定義注解之脫敏注解詳解

    這篇文章主要介紹了SpringBoot?自定義注解之脫敏注解詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java如何通過反射獲取對象的屬性和值

    Java如何通過反射獲取對象的屬性和值

    這篇文章主要介紹了Java如何通過反射獲取對象的屬性和值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • java實現(xiàn)簡單圖片上傳下載功能

    java實現(xiàn)簡單圖片上傳下載功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單圖片上傳下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評論