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

java讀寫ini文件、FileOutputStream問題

 更新時(shí)間:2023年04月11日 10:04:29   作者:老李與GPT  
這篇文章主要介紹了java讀寫ini文件、FileOutputStream問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java讀寫ini文件、FileOutputStream

在上課讓學(xué)生練習(xí)文件讀寫,就讓他們做了一個(gè)使用文件保存賬號(hào)和密碼的練習(xí),有一個(gè)比較愛學(xué)的學(xué)生就用到了了.ini文件,也就是我們所說的配置文件來保存賬號(hào)密碼(學(xué)生很聰明,知道用鍵值對(duì)的方式保存密碼,作為老師的我很汗顏?。。。。?,我沒仔細(xì)想就說你是不是進(jìn)行了多次字符串分割來獲取信息的,他說不是,只需要加幾步代碼就可以了。當(dāng)時(shí)沒細(xì)想說做出來就好……

后來我越想越不對(duì),就回辦公室自己寫了一下,發(fā)現(xiàn)還是有很多問題的。

在查看文檔的情況下,知道要讀取類似于鍵值對(duì)的文件,java已經(jīng)給我提供了一個(gè)叫 Properties的類,簡單如下:

    File file = new File("../JavaPractice/a.txt");
        try {
            FileInputStream inputStream = new FileInputStream(file);
            Properties properties = new Properties();
            properties.load(inputStream);//把文件中的內(nèi)容放在流里面
            properties.list(System.out);//通過這個(gè)方法把內(nèi)容打印出來

            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

打印如下:

-- listing properties --
a=b
12=222
asdasd1=asd111122
12123=123222

如果要直接使用鍵得到值得代碼如下:

File file = new File("../JavaPractice/a.txt");
        try {
            FileInputStream inputStream = new FileInputStream(file);
            Properties properties = new Properties();
            properties.load(inputStream);//把文件中的內(nèi)容放在流里面
//          properties.list(System.out);//通過這個(gè)方法把內(nèi)容打印出來
            System.out.println(properties.get("a"));//通過get方法得到對(duì)應(yīng)值
            System.out.println(properties.get("0"));//如果沒有對(duì)應(yīng)的值就為null
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

打印結(jié)果:

b

null

使用properties.set()方法存值

File file = new File("../JavaPractice/a.txt");
        try {
            FileInputStream inputStream = new FileInputStream(file);
            Properties properties = new Properties();
            properties.load(inputStream);//把文件中的內(nèi)容放在流里面
//          properties.list(System.out);//通過這個(gè)方法把內(nèi)容打印出來
            System.out.println(properties.get("a"));//通過get方法得到對(duì)應(yīng)值
            System.out.println(properties.get("0"));//如果沒有對(duì)應(yīng)的值就為null

            properties.setProperty("java", "love java");//使用此方法存值
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }   

我以為就這樣就存進(jìn)去,滿懷欣喜的打開文件,發(fā)現(xiàn)并沒有真正的存入值,但是我又試著使用properties.get()方法,卻能得到我放進(jìn)去的值,很是疑惑,只得再次看api。

File file = new File("../JavaPractice/a.txt");
        try {
            FileInputStream inputStream = new FileInputStream(file);
            Properties properties = new Properties();
            properties.load(inputStream);//把文件中的內(nèi)容放在流里面
//          properties.list(System.out);//通過這個(gè)方法把內(nèi)容打印出來
            System.out.println(properties.get("a"));//通過get方法得到對(duì)應(yīng)值
            System.out.println(properties.get("0"));//如果沒有對(duì)應(yīng)的值就為null

            properties.setProperty("java", "love java");//使用此方法存值
            FileOutputStream outputStream = new FileOutputStream(file);
            properties.store(outputStream, null);//只有調(diào)用這個(gè)方法才能寫進(jìn)文件,因?yàn)榍懊鎠et方法只是寫在流里面,直到調(diào)用這個(gè)方法才真正的寫入文件里。
            inputStream.close();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

new FileOutputStream 的位置有關(guān)系嗎?

如果把FileOutputStream outputStream = new FileOutputStream(file);放在load前面,那么文件里面所有的信息都會(huì)被覆蓋,放在load后面就不會(huì)了,因?yàn)閘oad后就保存在一個(gè)流里面。

因?yàn)镕ileOutputStream outputStream = new FileOutputStream(file);就默認(rèn)覆蓋文件,直接是文件為空,除非FileOutputStream outputStream = new FileOutputStream(file,true);,所有有的時(shí)候初學(xué)者會(huì)把這些東西搞混淆,最后怎么出錯(cuò)也不知道。(汗顏!?。∥乙渤鲞^這個(gè)錯(cuò)誤……)

最后細(xì)心的朋友可能會(huì)發(fā)現(xiàn)我并不是.ini文件,對(duì)的,我發(fā)現(xiàn)并不是只有ini文件才能做這樣的操作,所以我就多試驗(yàn)了下。

總結(jié)

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

相關(guān)文章

  • 利用Java實(shí)現(xiàn)調(diào)用http請(qǐng)求

    利用Java實(shí)現(xiàn)調(diào)用http請(qǐng)求

    在實(shí)際開發(fā)過程中,我們經(jīng)常需要調(diào)用對(duì)方提供的接口或測(cè)試自己寫的接口是否合適。本文就為大家準(zhǔn)備了幾個(gè)java調(diào)用http請(qǐng)求的幾種常見方式,需要的可以參考一下
    2022-08-08
  • 解決MyEclipse中Maven設(shè)置jdk版本jdk1.8報(bào)錯(cuò)問題

    解決MyEclipse中Maven設(shè)置jdk版本jdk1.8報(bào)錯(cuò)問題

    今天安裝了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一個(gè)maven項(xiàng)目,項(xiàng)目默認(rèn)是jdk1.5,改成jdk1.8后項(xiàng)目報(bào)錯(cuò)
    2018-10-10
  • Spring結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信的教程詳解

    Spring結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信的教程詳解

    WebSocket?是基于TCP/IP協(xié)議,獨(dú)立于HTTP協(xié)議的通信協(xié)議,本文將使用Spring結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能,有需要的小伙伴可以參考一下
    2024-01-01
  • Java?@Autowired報(bào)錯(cuò)原因分析和4種解決方案

    Java?@Autowired報(bào)錯(cuò)原因分析和4種解決方案

    這篇文章主要介紹了Java?@Autowired報(bào)錯(cuò)原因分析和4種解決方案,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考以一下
    2022-05-05
  • JavaTCP上傳文本文件代碼

    JavaTCP上傳文本文件代碼

    今天小編就為大家分享一篇關(guān)于JavaTCP上傳文本文件代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java細(xì)數(shù)IO流底層原理到方法使用

    Java細(xì)數(shù)IO流底層原理到方法使用

    IO主要用于設(shè)備之間的數(shù)據(jù)傳輸,Java將操作數(shù)據(jù)流的功能封裝到了IO包中,這篇文章主要給大家介紹了關(guān)于Java新手學(xué)習(xí)之IO流簡單使用的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • chatgpt java環(huán)境調(diào)用源碼實(shí)現(xiàn)demo

    chatgpt java環(huán)境調(diào)用源碼實(shí)現(xiàn)demo

    這篇文章主要介紹了chatgpt java環(huán)境調(diào)用源碼實(shí)現(xiàn)demo,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • 詳解如何用SpringBoot 2.3.0.M1創(chuàng)建Docker映像

    詳解如何用SpringBoot 2.3.0.M1創(chuàng)建Docker映像

    這篇文章主要介紹了詳解如何用SpringBoot 2.3.0.M1創(chuàng)建Docker映像,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • SWT(JFace) Menu、Bar...體驗(yàn)代碼

    SWT(JFace) Menu、Bar...體驗(yàn)代碼

    SWT(JFace)體驗(yàn)之Menu、Bar實(shí)現(xiàn)代碼。
    2009-06-06
  • Java實(shí)現(xiàn)分庫分表實(shí)踐指南

    Java實(shí)現(xiàn)分庫分表實(shí)踐指南

    在開發(fā)中我們經(jīng)常使用到分庫分表,但是一般是我們前期就已經(jīng)做了規(guī)劃,對(duì)數(shù)據(jù)庫怎么劃分,對(duì)哪些表進(jìn)行分表,這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)分庫分表的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評(píng)論