入門級學習c#語言,避免不了想讓自己的程式能和外界打交道,哪怕是乙個 txt 的記事本,那麼怎麼實現檔案的操作,這裡只是舉個小例子,還有待開發和修正哈
如果是只是為了研究這個操作怎麼寫,就建立乙個 c# 的命令列工程就行了,我這裡是為了做上位機,整了個windows的窗體設計,隨便畫了個介面,顯示一下我操作的結果,介面有點醜屬性都沒改,就像這樣,只是為了看一下
為了方便使用我造了 fileoperation 這個類,把檔案寫和檔案讀作為類下的兩個靜態方法,多多少少設計的還是不太合理,但這裡只是為了演示功能
public
static
string
readfile()
catch
(ioexception e)
decoder d = encoding.utf8.
getdecoder()
; d.
getchars
(bydata,
0, bydata.length, chardata,0)
;return
("read successful: "
+new
string
(chardata));
}
以上是檔案操作的讀方法,因為使用 filestream 類只能處理位元組,先宣告好了位元組陣列用來接收位元組流,也提前準備好等長度的字元陣列,將有關檔案操作的**封裝在 try 中以應對可能丟擲的異常,同時也方便我們看到。這裡因為我是想把它顯示在我的窗體中的文字控制項裡所以返回了字串,同時返回一下錯誤資訊看一下,這裡的錯誤資訊說要委託才能轉字串,所以就簡易委託一下,感覺有點隨便哈,具體怎麼實現比較好還得再研究一下,不是目前的重點。
通過 filestream 類得到記事本裡的資料後,只是乙個位元組資料,需要處理一下。為此,使用 system.text 命名空間的 decoder 類。此類用於將原始位元組轉換為更有用的項。宣告乙個解碼器,基於utf-8編碼形式。再呼叫 getchars 方法,將它轉換為字元陣列,這裡之前宣告好的字元陣列就派上了用場。返回時再用 string 的初始化器,把字元陣列轉換成字串。
在檔案操作時其實還有一種方法,利用 streamreader ,它可以直接讀入字串,也比較容易,但沒有 filestream 靈活,filestream 的處理位元組的功能使它除了文字還可以處理其它的資料檔案,比如影象和聲音。比較複雜的就是需要對位元組資料進行處理,利用幾種轉換類來實現。
其中一些方法後面的引數就不詳細說了,參考編寫時的 ide 的提示吧。
public
static
string
writefile()
catch
(ioexception e)
}
檔案的寫入就是上面檔案的檔案的讀取的逆過程,事先準備好位元組陣列和字元陣列,大小先不定,由我們想要寫入的字串的長度來決定。同樣封裝在 try 裡,將字串用字元數組裝起來,對比著讀取的解碼器,這裡宣告乙個編碼器,把字元數字轉成位元組陣列。
多出來的 seek 的方法呼叫,是重定義一下檔案指標的位置,從頭寫入。值得注意的是,這裡專門呼叫了一下 close 的方法,因為在除錯的時候發現,如果沒有用 close 寫入後如果立馬讀取會導致讀取失敗。像下圖這樣
可以看到,寫入成功,但讀取失敗。所以我結合學過的c語言的檔案操作,我覺得是因為寫的時候,檔案開啟後寫入,還沒關上就讀,相當於同時操作乙個檔案,這是不允許的,c語言有嚴格的檔案開啟和關閉的操作,那麼c#應該也有,一找果然有,就是這個 close 方法,但是在呼叫時 ide 提醒我說,這個東西一般不直接用,容易出問題。這個應該和c#自身的檔案操作特性有關,因為單獨呼叫讀,或呼叫寫,都無需特別留意,開啟了檔案後關沒關上,c#的機制會令其過一段時間就自己關上。只是這裡我們研究時比較苛刻,剛寫入就要讀。加上 close 的方法,就可以看到正確的結果了。
ide提醒我不直接呼叫 close 那麼應該還有更好的處理方法,還有待研究,總而言之,可以順利地從記事本裡讀資料和寫資料了
c語言學習筆記之檔案操作
1 static 和extern使用 1 修飾區域性變數 static修飾區域性變數特點 延長區域性變數的生命週期 extern不能修飾區域性變數 2 修飾全域性變數 static修飾全域性變數 是乙個內部變數,只能在本檔案使用。extern修飾全域性變數 是乙個外部變數,可以在本檔案和其他檔案使用...
C語言學習之檔案操作
開啟檔案 fopen 需要判斷是否成功開啟,開啟失敗返回null 操作檔案 讀檔案 fread 寫檔案 fwrite 關閉檔案 fclose 需要判斷檔案指標是否為空 file fopen const char pathname,const char mode file 返回檔案指標,若開啟失敗,返...
C語言學習筆記(鍵盤操作
1 緩衝輸入 執行程式並鍵入一行文字,在使用者按下回車鍵之前程式是不能使用這些字元的。但是,按下回車鍵之後,程式將讀入並顯示字元,直到遇見換行符 作業系統在使用者按回車鍵時建立換行符 為止。int letter dowhile letter n 以下是簡寫 int letter dowhile le...