File類與FileInfo類的區別

2022-09-14 01:30:11 字數 3701 閱讀 6165

這些年**也寫了不少,關於檔案i/o的操作也寫了很多,基本上file類與fileinfo類也沒有刻意的去看效能,有時用著也挺糊塗的,今天就將這些i/0操作總結下,老樣子貼碼

首先先了解清楚下file類與fileinfo類的定義:

file類:

引用命名空間:using system.io;

將 file 類用於典型的操作,如複製、移動、重新命名、建立、開啟、刪除和追加到檔案。也可將 file 類用於獲取和設定檔案屬性或有關檔案建立、訪問及寫入操作的 datetime 資訊。

許多 file 方法在您建立或開啟檔案時返回其他 i/o 型別。可以使用這些其他型別進一步處理檔案。有關更多資訊,請參見特定的 file 成員,如 opentext、createtext 或 create。

由於所有的 file 方法都是靜態的,所以如果只想執行乙個操作,那麼使用 file 方法的效率比使用相應的 fileinfo 例項方法可能更高。所有的 file 方法都要求當前所操作的檔案的路徑是存在的(不包含檔案物件)。

file 類的靜態方法對所有方法都需要占用一定的cpu處理時間來進行安全檢查,即使使用不同的file類的方法重複訪問同乙個檔案時也是如此。

如果打算多次重用某個物件,可考慮改用 fileinfo 的相應例項方法,因為只在建立fileinfo物件時執行一次安全檢查。並不總是需要安全檢查。

預設情況下,將向所有使用者授予對新檔案的完全讀/寫訪問許可權。

1

string path = @"

g:\temp\temp2\mytest.txt";

2//∴需要先判斷路徑是否是存在的 不存在則建立

3string strpath=path.split('\\'

);4string path2= path.replace("

\\" + strpath[strpath.length - 1], "");5

if (!directory.exists(path2))

6

1

//第一種寫法:基於字元方式的讀取

2if (!system.io.file.exists(path))//

∵file.exists()只是判斷檔案物件是否存在 而不會去判斷你的路徑是否是真實的311

//open the file to read from.

12using (streamreader sr =system.io.file.opentext(path))

1319

}20 }

1

//第二種寫法:基於位元組方式的讀取

2if (!system.io.file.exists(path))36

//open the stream and write to it

7using (filestream fs =system.io.file.openwrite(path))812

//open the stream and read it back.

13using (filestream fs =system.io.file.openread(path))

1419}20

//第二種寫法 可以使用binarywriter 和 binaryreader 類讀取和寫入資料,注意這兩個類不是用於讀取和寫入字串。

21if(!system.io.file.exists(path))

2231

//catch (exception ee)

32//

35 fs = new

filestream(path, filemode.open, fileaccess.read);

36 binaryreader br = new

binaryreader(fs);

37 response.write(br.readstring());//

讀取資料 需要注意

38br.close();

39fs.close();

40 }

fileinfo類:

引用命名空間:using system.io;

將 fileinfo 類用於典型的操作,如複製、移動、重新命名、建立、開啟、刪除和追加到檔案。

許多 fileinfo 方法在您建立或開啟檔案時返回其他 i/o 型別。可以使用這些其他型別進一步處理檔案。有關更多資訊,請參見特定的 fileinfo 成員,如 open、openread、opentext、createtext 或 create。

如果打算多次重用某個物件,可考慮使用 fileinfo 的例項方法,而不是 file 類的相應靜態方法,因為並不總是需要安全檢查。

預設情況下,將向所有使用者授予對新檔案的完全讀/寫訪問許可權。

1

///2

///fileinfo類 基於字元的寫讀檔案流

3///

4private

void

writefileinfo()518

}19using (streamreader sr =fi.opentext())

2026}27

try2840}

41}42catch

(exception e)

4346}47

}48///49

///基於字元 寫檔案流

50///

51private

void

writecharfile()

52else

6166 sw= new

streamwriter(fs);

67sw.write(msg);

68//

sw.flush();

//清理當前編寫器的所有緩衝區,並使所有緩衝資料寫入基礎流

69sw.close();

70 response.write("

字元 寫入流成功");

71fs.close();72}

73///

74///

基於字元 讀檔案流

75///

76private

void

readcharfile()

7785

else

8694}95

///96

///基於位元組 寫入檔案流

97///

98private

void

writebytefile()

99111

else

112115 fs.write(buffer, 0

, buffer.length);

116fs.close();

117 response.write("

位元組寫入流成功");

118}

119else

120123

}124

///125

///基於位元組 讀檔案流

126///

127private

void

readbytefile()

128137

else

138145 }

file類和fileinfo類的異同

system.io命名空間中提供的檔案操作類有file和fileinfo,這兩個類的功能基本相同,只是file是靜態類,其中所有方法都是靜態的,可以通過類名直接呼叫,不需要例項化。而fileinfo是普通類,只有例項化物件後才可以呼叫其中的方法。file類是乙個靜態類,它對應整個檔案系統進行操作,方...

C 檔案操作 File類和FileInfo類

file類可以對檔案進行讀寫,對單個檔案處理的效率比fileinfo類高,file類的方法都是靜態方法,呼叫的時候直接用類呼叫 using system using system.collections.generic using system.linq using system.text usin...

檔案管理類 FileInfo 和 File

fileinfo.copyto 不能複製整個資料夾的內容,如果需要複製整個資料夾的內容的話,需要單獨複製每個檔案,並建立於舊目錄相同的資料夾名稱才可以 汗 這個麻煩了 通過檢查 exists 可以確定檔案是否存在 複製指定目錄的所有檔案,不包含子目錄 原始目錄 目標目錄 如果為true,表示覆蓋同名...