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

java讀寫ini文件、FileOutputStream問題

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

java讀寫ini文件、FileOutputStream

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

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

在查看文檔的情況下,知道要讀取類似于鍵值對的文件,java已經(jīng)給我提供了一個叫 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);//通過這個方法把內(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);//通過這個方法把內(nèi)容打印出來
            System.out.println(properties.get("a"));//通過get方法得到對應(yīng)值
            System.out.println(properties.get("0"));//如果沒有對應(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);//通過這個方法把內(nèi)容打印出來
            System.out.println(properties.get("a"));//通過get方法得到對應(yīng)值
            System.out.println(properties.get("0"));//如果沒有對應(yīng)的值就為null

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

我以為就這樣就存進去,滿懷欣喜的打開文件,發(fā)現(xiàn)并沒有真正的存入值,但是我又試著使用properties.get()方法,卻能得到我放進去的值,很是疑惑,只得再次看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);//通過這個方法把內(nèi)容打印出來
            System.out.println(properties.get("a"));//通過get方法得到對應(yīng)值
            System.out.println(properties.get("0"));//如果沒有對應(yīng)的值就為null

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

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

如果把FileOutputStream outputStream = new FileOutputStream(file);放在load前面,那么文件里面所有的信息都會被覆蓋,放在load后面就不會了,因為load后就保存在一個流里面。

因為FileOutputStream outputStream = new FileOutputStream(file);就默認覆蓋文件,直接是文件為空,除非FileOutputStream outputStream = new FileOutputStream(file,true);,所有有的時候初學(xué)者會把這些東西搞混淆,最后怎么出錯也不知道。(汗顏?。?!我也出過這個錯誤……)

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

總結(jié)

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

相關(guān)文章

  • 利用Java實現(xiàn)調(diào)用http請求

    利用Java實現(xiàn)調(diào)用http請求

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

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

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

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

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

    Java?@Autowired報錯原因分析和4種解決方案

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

    JavaTCP上傳文本文件代碼

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

    Java細數(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)用源碼實現(xiàn)demo

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

    這篇文章主要介紹了chatgpt java環(huán)境調(diào)用源碼實現(xiàn)demo,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    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映像,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • SWT(JFace) Menu、Bar...體驗代碼

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

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

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

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

最新評論