国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容

這篇具有很好參考價(jià)值的文章主要介紹了java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

長(zhǎng)字符串起因

  • 項(xiàng)目里面有一長(zhǎng)串的加密字符串(最長(zhǎng)的萬(wàn)多個(gè)字符),需要拼接作為參數(shù)發(fā)送給第三方。

java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容

  • 如果我們使用 枚舉 定義的話(huà),idea 編譯的時(shí)候就會(huì)出現(xiàn)編譯報(bào)錯(cuò)
Error: java:常量字符串過(guò)長(zhǎng)

java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容


解決想法

  • 網(wǎng)上還有一個(gè)說(shuō)法,說(shuō)是編譯器問(wèn)題,修改 idea 工具的編譯為 eclipse 即可。

  • 但是結(jié)果我仍然不滿(mǎn)意,所以我決定把他放在文件中,然后需要的時(shí)候讀取出來(lái)即可。

  • 所以,我就把字符串放到了 resources 的某個(gè) txt 文件下,然后再?gòu)奈募凶x取出來(lái)

java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容


遇到的問(wèn)題

  • 在 spring boot 項(xiàng)目中,嘗試了好多次讀取 resources 下的 payload.txt 文件一直失敗。
  • 報(bào)錯(cuò)一直是該文件不存在

一開(kāi)始使用的是 hutool util 工具類(lèi)去讀取,但是不成功。

String filePath = "payload.txt";
String contentString = FileUtil.readUtf8String(Thread.currentThread().getContextClassLoader().getResource("").getPath() + filePath);
  • 可以看到我的 target 編譯后的文件里面確實(shí)是存在這個(gè)文件的。
    java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容

最終解決辦法

// 先轉(zhuǎn)為流
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(path);
// 再把流轉(zhuǎn)為 String
String content = new BufferedReader(new InputStreamReader(inputStream))
                            .lines().collect(Collectors.joining("\n"));
  • 封裝代碼
public final class ClassPathResourceReader {
    /**
     * path:文件路徑
     * @since JDK 1.8
     */
    private final String path;
    /**
     * content:文件內(nèi)容
     * @since JDK 1.6
     */
    private String content;
    public ClassPathResourceReader(String path) {
        this.path = path;
    }
    public String getContent() {
        if (content == null) {
            try {
                InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(path);
                if (inputStream!=null) {
                    content = new BufferedReader(new InputStreamReader(inputStream))
                            .lines().collect(Collectors.joining("\n"));
                }else {
                    throw new RuntimeException("創(chuàng)建 lookLike-app 受眾出現(xiàn)異常:File not exist");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return content;
    }
}

這樣相當(dāng)于做了個(gè)本地緩存,就不用每次都去讀取文件了,性能嘎嘎快。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-412564.html

  • 代碼調(diào)用
 String content = new ClassPathResourceReader("payload.txt").getContent();

到了這里,關(guān)于java 處理常量字符串過(guò)長(zhǎng) & springboot 項(xiàng)目讀取 resouces 文件夾下的文件內(nèi)容的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語(yǔ)言常量(整型、實(shí)型、字符型、字符串、符號(hào)常量)

    C語(yǔ)言常量(整型、實(shí)型、字符型、字符串、符號(hào)常量)

    對(duì)于C語(yǔ)言常量,該文章有詳講,由于文章太長(zhǎng),可參考如下思維導(dǎo)圖和目錄,可通過(guò)目錄選擇自己所需要的內(nèi)容閱讀。 整型常量即整數(shù),包括正整數(shù)、負(fù)整數(shù)和零。C語(yǔ)言中,整型常量可以用十進(jìn)制、八進(jìn)制、和十六進(jìn)制表示。 十進(jìn)制表示: 由數(shù)字0-9,正、負(fù)號(hào)組成,如3

    2024年02月07日
    瀏覽(23)
  • 解決因base64字符串過(guò)長(zhǎng),報(bào)500的問(wèn)題

    解決因base64字符串過(guò)長(zhǎng),報(bào)500的問(wèn)題

    提示:后端用nodejs的express,前端是vue 當(dāng)上傳的圖片?。╞ase64字符串長(zhǎng)度小)時(shí),上傳成功 當(dāng)上傳的圖片大(base64字符串長(zhǎng)度過(guò)長(zhǎng))時(shí),上傳失敗,接口報(bào)500,服務(wù)器也報(bào)了一大堆的錯(cuò)誤。 如果直接把base64字符串復(fù)制到數(shù)據(jù)庫(kù)發(fā)現(xiàn)報(bào)錯(cuò),提示數(shù)據(jù)太長(zhǎng),很明顯是因?yàn)閎ase64字符

    2024年02月11日
    瀏覽(28)
  • .NET字符串內(nèi)存管理:常量字符串、動(dòng)態(tài)創(chuàng)建和字符串池的巧妙結(jié)合

    .NET字符串內(nèi)存管理:常量字符串、動(dòng)態(tài)創(chuàng)建和字符串池的巧妙結(jié)合

    ? 在 .NET 中,字符串是不可變的,這意味著一旦創(chuàng)建,字符串的內(nèi)容就不能被修改。字符串在內(nèi)存中以不同的方式存儲(chǔ),具體取決于它是常量字符串還是動(dòng)態(tài)創(chuàng)建的字符串。 常量字符串在編譯時(shí)就被解析,并在程序的元數(shù)據(jù)(Metadata)中存儲(chǔ)。多個(gè)相同的字符串常量可能會(huì)共

    2024年01月20日
    瀏覽(25)
  • C語(yǔ)言入門(mén)之變量、常量、字符串、轉(zhuǎn)義字符

    C語(yǔ)言入門(mén)之變量、常量、字符串、轉(zhuǎn)義字符

    文章目錄 變量 常量 字符串 轉(zhuǎn)義字符 1.變量的命名規(guī)則: 只能由字母(包括大寫(xiě)和小寫(xiě))、數(shù)字和下劃線(xiàn)( _ )組成。 不能以數(shù)字開(kāi)頭。 長(zhǎng)度不能超過(guò)63個(gè)字符。 變量名中區(qū)分大小寫(xiě)的。 變量名不能使用。 2.變量的分類(lèi): ????????變量可以分為局部變量以及全局

    2023年04月19日
    瀏覽(30)
  • C語(yǔ)言字符串初始化詳解:用常量字符串進(jìn)行字符數(shù)組初始化

    簡(jiǎn)介 字符串初始化 用常量字符串 初始化過(guò)程 示范代碼 結(jié)論 在C語(yǔ)言中,字符串被定義為字符數(shù)組。字符串的初始化是指將一個(gè)常量字符串復(fù)制到字符數(shù)組中。本文將詳細(xì)介紹字符串的初始化方法,并提供相應(yīng)的示范代碼。 在C語(yǔ)言中,有幾種常用的方法可以用常量字符串來(lái)

    2024年02月15日
    瀏覽(34)
  • C語(yǔ)言——字符串常量初始化

    ????????使用雙引號(hào)括住字符串的字符來(lái)創(chuàng)建字符串常量。 ????????使用字符數(shù)組來(lái)存儲(chǔ)字符串常量。 ????????使用字符串指針來(lái)初始化字符數(shù)組。 ? ? ? ? 無(wú)論使用哪種方法,字符串常量在C語(yǔ)言中都是不可修改的。嘗試修改字符串常量會(huì)導(dǎo)致未定義的行為。

    2024年01月23日
    瀏覽(17)
  • 【Go基礎(chǔ)】編譯、變量、常量、基本數(shù)據(jù)類(lèi)型、字符串

    【Go基礎(chǔ)】編譯、變量、常量、基本數(shù)據(jù)類(lèi)型、字符串

    面試題文檔下鏈接點(diǎn)擊這里免積分下載 go語(yǔ)言入門(mén)到精通點(diǎn)擊這里免積分下載 使用 go build 1.在項(xiàng)目目錄下執(zhí)行 2.在其他路徑下編譯 go build ,需要再后面加上項(xiàng)目的路徑(項(xiàng)目路徑從GOPATH/src后開(kāi)始寫(xiě)起,編譯之后的可執(zhí)行文件就保存再當(dāng)前目錄) 3.打包的時(shí)候自定義名字:

    2024年02月09日
    瀏覽(28)
  • JVM的內(nèi)存分配及各種常量池的區(qū)別(靜態(tài)常量池、運(yùn)行時(shí)常量池、字符串常量池)

    先了解下JVM中的內(nèi)存分配,此處以hotspot vm為例(官方j(luò)dk采用的vm) 堆內(nèi)存是各個(gè)線(xiàn)程共享的區(qū)域 它用于存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類(lèi)信息、常量、靜態(tài)變量、即編譯器編譯后的代碼等數(shù)據(jù)。靜態(tài)變量、常量在方法區(qū),所有方法,包括靜態(tài)和非靜態(tài)的,也在方法區(qū) 這里解釋一下方法

    2023年04月14日
    瀏覽(19)
  • JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)——字符串常量池位置的調(diào)整

    JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)——字符串常量池位置的調(diào)整

    ????????在JDK6及之前,使用永久代來(lái)實(shí)現(xiàn)方法區(qū),字符串常量池(StringTable)是在 永久代(方法區(qū))中 的,但是方法區(qū)的回收效率不高,在Full GC時(shí)才會(huì)回收。 ? ????????在JDK7中,將字符串常量池 轉(zhuǎn)移到了堆中 ,分配在年輕代和老年代中。 ????????在JDK8中,為了 融合

    2024年02月16日
    瀏覽(48)
  • 【數(shù)據(jù)結(jié)構(gòu)】String類(lèi)對(duì)象的創(chuàng)建與字符串常量池的“神秘交易”

    【數(shù)據(jù)結(jié)構(gòu)】String類(lèi)對(duì)象的創(chuàng)建與字符串常量池的“神秘交易”

    作者主頁(yè): paper jie_博客 本文作者:大家好,我是paper jie,感謝你閱讀本文,歡迎一建三連哦。 本文錄入于《JAVA數(shù)據(jù)結(jié)構(gòu)》專(zhuān)欄,本專(zhuān)欄是針對(duì)于大學(xué)生,編程小白精心打造的。筆者用重金(時(shí)間和精力)打造,將javaSE基礎(chǔ)知識(shí)一網(wǎng)打盡,希望可以幫到讀者們哦。 其他專(zhuān)欄:

    2024年02月08日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包