這些年**也寫了不少,關於檔案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物件時執行一次安全檢查。並不總是需要安全檢查。
預設情況下,將向所有使用者授予對新檔案的完全讀/寫訪問許可權。
1string 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,表示覆蓋同名...