C 簡單的檔案操作

2021-10-03 07:10:54 字數 3749 閱讀 4065

程式中的資料通常儲存在記憶體中,程式關閉後,資料就會清除。檔案就適合儲存相對簡單的資料或程式的計算結果。

建立檔案流

建立閱讀器或者寫入器

執行讀寫操作

關閉閱讀器或者寫入器

關閉檔案流

2.1、檔案流

流是乙個用於資料傳輸的物件。

我們使用的檔案流是filestream類,使用前需要匯入system.io命名空間,它主要用於讀寫檔案中的資料,在建立它的物件時,需要在它的建構函式中指定引數。如下:

filestrean fs = new filestrean(路徑,filemode);
其中的filemode是列舉型別,有以下值:

createnew :建立新的檔案,如果檔案已經存在會異常

create :建立新檔案,檔案如果已經存在了直接開啟已經存在的檔案

open:開啟乙個已經存在的檔案,如果檔案不存在會報錯

openorcreate :檔案存在則開啟已經存在的檔案。檔案不存在則先建立乙個新的檔案,再開啟

truncate:檔案存在的話,先把裡面的內容刪除,然後再往裡面寫內容。檔案不存在會發生異常

2.2、閱讀器/寫入器

2.2.1、寫入器:streamwriter

寫入器建立物件的語法:

streamwriter writer = new streamwriter(檔案流物件);
常用方法有:

streamwriter.write() :用於寫入流,這個流就是我們建立好的流

streamwriter.writeline():用於寫入一行資料,寫入後跟換行符

streamwriter.close():用於關閉寫入器

streamreader reader = new streamreader(檔案流物件);
常用方法有:

streamreader.readline():讀取檔案流中的一行資料,並返回字串

streamreader.readtoend():從當前位置都到末尾,返回字串

streamreader.close():用於關閉讀取器

用streamreader讀取檔案中的中文文字,因為不同的檔案編碼格式的不同導致有時會產生亂碼問題。

所以c#中使用encoding類指定字元編碼。encoding類位於system.text命名空間,用來表示字元編碼。語法如下:

streamreader reader = new streamreader(檔案流物件,encoding.default);
encoding.default:獲取作業系統的當前編碼

也可以通過**encoding類的靜態方法getencoding(string name)**指定字元編碼,引數name必須是c#支援的編碼名。

都位於system.io命名空間中

file

file是靜態類,它的主要方法如下表所示:

方法名稱

說明delete(string path)

刪除檔案,若檔案不存在,不會異常

exists(string path)

用於檢查指定檔案是否存在,返回bool

copy(string sourcefilepath,string destfilename)

將指定路徑的原始檔中的內容複製到目標檔案中,如果目標檔案不存在,在指定路徑中新建乙個檔案

move(string sourcefilepath,string destfilename)

將指定檔案移動到乙個新的路徑(新路徑不能已存在相同的檔名)

creat(string path)

新建檔案

fileinfo

fileinfo 是非靜態類

使用時必須建立物件才能使用:

fileinfo fi = new fileinfo(string path);
它的主要屬性和方法如下表所示:

方法/屬性

說明delete() //方法

刪除檔案,若檔案不存在,不會異常

exists //屬性

用於檢查指定檔案是否存在,返回bool

copyto(string destfilename) //方法

將現有檔案複製到新檔案,不允許覆蓋現有檔案

moveto(string destfilename) //方法

將指定檔案移動到乙個新的路徑(新路徑不能已存在相同的檔名)

extension //屬性

獲取表示副檔名部分的字串

name //屬性

獲取檔名

fullname //屬性

獲取目錄或檔案的完整目錄

directory

directory是靜態類,它的主要方法如下表所示:

方法名稱

說明delete(string path)

刪除指定目錄

exists(string path)

用於檢查指定目錄是否存在,返回bool

move(string sourcefilepath,string destfilename)

用於將檔案或目錄及其內容移動到乙個新位置

createdirectory(string path)

新建檔案

delete(string path,bool recursive)

刪除指定目錄,如果bool值為true,刪除子目錄中的所有目錄內容

getdirectories(string path)

得到當前目錄的子目錄 directory接收

getfiles(string path)

得到當前目錄的所有檔案 file接收

directoryinfo

directoryinfo 是非靜態類

使用時必須建立物件才能使用:

directoryinfo  directoryinfo = new directoryinfo(string path);
它的主要屬性和方法如下表所示:

方法/屬性

說明delete() //方法

刪除目錄

exists //屬性

用於檢查指定目錄是否存在,返回bool

moveto(string destfilename) //方法

將目錄移動到乙個新路徑(新路徑不能已存在相同的目錄名)

name //屬性

獲取目錄的名字

parent //屬性

父級目錄

靜態類非靜態類

用static修飾

不用static修飾

只包含靜態成員

可包含靜態成員

不可以包含例項成員

可以包含例項成員

使用類名呼叫靜態成員

例項物件呼叫非靜態成員

不能被例項化

可以被例項化

不能包含例項建構函式

包含例項建構函式

注意:使用static修飾的類也不能夠被繼承。

C 的簡單檔案操作

檔案操作 1.1 流和檔案流物件 檔案是存放在計算機外存上的一組相關資訊的集合。c 採用 流 的概念來描述檔案。接受資料的地方稱為目標,發出資料的地方稱為源。為了能與檔案交換資料,就需要與檔案建立聯絡,流就是這種聯絡。處理檔案前,必須先建立檔案流物件,它與檔案相關,通過檔案流物件操作檔案。c 提供了...

C 檔案的簡單操作

標頭檔案 include 實現對檔案物件的操作 include 實現輸入輸出定義檔案物件 ifstream file1 x ofstream file2 x file1.close file2.close ifstream file1 x 表示開啟在路徑x 下名為name的txt檔案,並將其命名為f...

c 簡單的檔案操作

使用fileinfo類的物件進行檔案進行外部操作 fileinfo file new fileinfo lzx.txt if file.exists else 這裡可以使用相對路徑和絕對路徑。需要注意是的當前路徑是位於工程檔案的.bin debug下的 fileinfo類下的方法都很好理解,自行檢視...