檔案的操作

2021-10-03 06:10:43 字數 3767 閱讀 5337

在檔案操作之前要匯入命名空間:system.io;

讀寫檔案的步驟分為5步:

1、建立檔案流

語法:

filestream fd = new filestream("檔案路徑",filemode);
//其中「filemode」是列舉型別的,列舉型別的主要作用是約定乙個變數的值的範圍;其中包括有:

create:用指定名稱新建乙個檔案,如果檔案存在就改寫舊檔案;

createnem:新建乙個檔案;

open:開啟乙個檔案;

openorcreate:開啟乙個檔案,如果檔案不存在就用指定的名稱新建乙個檔案;

truncate:檔案存在,先把裡面的內容刪除掉,再往裡面寫內容,如果檔案不存在就會報錯。

2、建立閱讀器\寫入器

建立:

streamreader sr = new streamreader(filestream fs);
屬性:

sr.readline(); 讀取檔案流中一行資料;

sr.readtoend(); 從當前位置讀到末尾,返回字串;

sr.close(); 關閉

2、建立寫入器:streamwriter

建立:

streamwriter sw = new streamwriter(filestream fs);
屬性:

sw.write(); 用於寫入流,該流是已建立好的流;

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

sw.close(); 關閉

3、執行讀寫操作

這裡只需要寫你需要的**

4、關閉閱讀器\寫入器

關閉寫入器:sw.close();

5、關閉檔案流

關閉檔案流:fs.close();

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

檔案流:c#裡面指的檔案流是filestream,主要用於讀寫檔案中的資料;

用streamreader讀取檔案中的文字檔案的時候,可能會出現亂碼的問題;要解決這個問題就要指定編碼格式;

streamreader sr = new streamreader(filestream fs,encoding.default);
這裡的encoding類就是指定編碼格式;encoding位於system.text命名空間;

encoding.utf8: 獲得utf-8格式的編碼;

encoding.default: 獲得當前作業系統的當前編碼;

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

streamreader sr = new streamreader(filestream fs,encoding.getencoding("gb2312"));
這就是encoding的方法getencoding(string name)的使用;

常見的編碼名:ascii、ansi、gb2312、unicode(utf-16、utf-32、utf-8),c#內部預設支援utf-8編碼;

檔案有兩個類:file(是靜態類)和 fileinfo(非靜態類)

1、file的方法:

static void delete(string path) 刪除檔案

static void bool exists(string path) 檢查指定檔案是否存在

static void copy(string sourefilepath,string destfilepath) 複製檔案

static void move(string sourefilename,string destfilename) 移動檔案

static filestream create(string path) 新建檔案

注:path:路徑、sourefilepath :原檔案路徑、destfilename :新檔案路徑、

移動和複製的區別:複製原檔案還存在;

2、fileinfo:禁止繼承

建構函式:fileinfo只有乙個建構函式

public fileinfo(string filename){}
fileinfo的屬性和方法

屬性:exists :用於檢查檔案是否存在;

directoryinfo directory:

string directoryname:檔案所在目錄;

long length:檔案大小;

override string name :檔名稱;

方法:delete() :這個刪除方法是沒有引數的;

copyto(string path) :複製,這裡的path是指新路徑;

moveto(string destfilename) :移動,這裡的destfilename是指新路徑;

filesysteminfo類是fileinfo的父類;

string fullpath :全路徑;

string extension :字尾;

這裡也是和file一樣的,還有其他方法可以檢視原始碼進行學習;

目錄也有兩個類分別是directory和directoryinfo

1、directory-----靜態類

directory的方法:

bool exists(string path) :檢查指定的檔案是否存在;

void move(string sourcedirname,string destdirname) :移動檔案

void delete(string path,bool recursive) :刪除,當recursive為true時,連同子目錄中的所有內容都刪除;

datetime getcreationtime(string path) :得到該檔案建立的時間;

string getdirectories(string path) :得到所有的子目錄;

string getfiles(string path):得到所有子檔案;

以上是比較常用的方法,需要學習更多的方法請檢視原始碼;

2、directoryinfo -----非靜態類

建立:public directoryinfo(string path);

屬性:override bool exists :檢查指定檔案是否存在;

string name:檔名;

directoryinfo parent :拿到父目錄

方法:void delete() 刪除,前提是目錄裡沒有其他檔案,否則會報錯;

void delete(bool recursive) :當recursion為true時連同子目錄中的所有內容都刪除;

directoryinfo getdirectories() :得到所有子目錄;

directoryinfo getfiles() :得到所有子檔案;

需要其他方法的可以檢視原始碼;

靜態類非靜態類

只包含靜態成員

可以包含靜態成員

不可以包含例項成員

可以包含例項化成員

使用類名呼叫靜態成員

使用例項物件呼叫非靜態成員

不能被例項化

可以被例項化

不能包含例項建構函式

可以包含例項建構函式

用static修飾

不用static修飾

定義類中的靜態成員的語法:

class 類名 

}

檔案的操作

openopen 內建函式,open底層呼叫的是作業系統的介面 f1,變數.f1,fh,file,file handler,f h 檔案控制代碼.通過對檔案的任何操作都會通過檔案控制代碼.的方式.encoding 可以不寫,不寫引數,預設編碼本.預設編碼本 作業系統的預設的編碼 檔案控制代碼 是乙個...

檔案的操作

只要牽扯到檔案的操作,都是字串 開啟檔案用到 w 原始檔內容會被清空 相當於新建 sprip 取消換行符 換行符2個位元組 一 開啟 win gbk mac linux utf 8 f open 歌詞 f 檔案操作符 檔案控制代碼 檔案操作物件 習慣叫 f file f obj f handler ...

檔案的操作

路徑 開啟方式 編碼格式。不標註開啟方式預設為唯讀。f1 open d a.txt encoding utf 8 mode r f1 為檔案控制代碼,也叫檔案物件,所有的讀寫操作都是通過檔案控制代碼完成的 生成檔案控制代碼 檔案的讀 寫,檔案寫操作必須以寫形式開啟檔案,檔案讀操作必須以讀或讀寫操作開...