IO讀寫(資源檔案)

2021-08-31 01:49:48 字數 1847 閱讀 4052

工作也有一年左右了,發現io的使用還是很多的,主要是配置檔案比較多。雖然理解起來並不複雜,看看原始碼看看api重新寫乙個自己需要的也要不了多少時間,權且記下,給自己新增一點印象也給初學者多一點學習資料吧。

以property檔案為例

1.檔案讀

檔案讀取用到inputstream這個抽象類,它是位元組輸入流的所有類的超類,類很簡單沒有幾個方法,值得一提的是有好幾個類擴充套件了這個類,是學習裝飾著模式好例子。

public void read(string resourcepath) throws filenotfoundexception  catch (ioexception e) 

show(properties);

} public void show(properties properties)

}

上面的properties  類是資源檔案總是使用的類,api上這個解釋的:
properties類表示了乙個持久的屬性集。properties可儲存在流中或從流中載入。屬性列表中每個鍵及其對應值都是乙個字串。

乙個屬性列表可包含另乙個屬性列表作為它的「預設值」;如果未能在原有的屬性列表中搜尋到屬性鍵,則搜尋第二個屬性列表。

以鍵值對的形式儲存資料,此類繼承自hashtable.

2.檔案寫

檔案寫需要用到outputstream 這個類,同樣它也是個抽象類,和inputstream類一樣也被擴充套件。我喜歡用filewriter,他們之間的區別是乙個是以字元的形式(filewriter)乙個是以位元組形式(fileoutputstream)進行處理.

public void write(string resourcepath)  catch (exception e) 

}

filewriter構造方法有個boolean型別的引數,這個引數用的比較多,表示是否以追加的方式往檔案中寫資料。

properties類中提供了我們在寫程式中比較常見的一些方法。

現在比如我要滿足乙個需求:往資源檔案中存資料如果有這個key了就修改key 對應的值,否則插入乙個新的。

/**

* 判斷是否有相應的key如果有就刪除,然後新增

* * @throws exception

*/public void syhneed() throws exception

properties.remove("name");// 如果有了就刪除

} properties.setproperty(key, value);

filewriter fw;

fw = new filewriter(new file("src/" + filename));// 不能是追加的方式了。

properties.store(fw, null); // 存起來

fw.flush();

fw.close();

}

看看是不是滿足要求了,呵呵。

小插曲:

個人比較得瑟,讀檔案的時候用了

inputstream datastream = this.getclass().getclassloader()

.getresourceasstream(resourcepath);

來得到檔案流,ok,src目錄下也有這個檔案讀出來沒有問題,但是我用檔案修改之後讀取出來卻沒有改變,後面才知道通過這個方式的資料是從記憶體中讀出來的,就算真的修改了,如果記憶體沒有更新取出的資料還是沒有改變的。仔細看了也難怪,這個得到的classloader肯定是記憶體的東東呀。然後得到classloader中的資源必須也是記憶體中的啊。

C 資源檔案

獲取資源檔案 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system...

rc資源檔案

resource complier 中詳細描述了資源檔案的編寫與使用.包括巨集的使用.舉例 在debug模式下包含乙個debugdll,在release 模式下包含另乙個releasedll ifdef debug dictionaryonlinedll.dll data debug diction...

操作資源檔案

二 visual c 如何建立資源檔案 resourcewriter rw new resourcewriter my.resources rw.generate 產生乙個名稱為 my.resources 的資源檔案。三 在資源檔案中新增資源 1 加入位元組陣列,語法格式為 public void ...