2010-08-20 41 views
1

是否有任何性能或下面的代碼之間OS的文件系統權限什麼樣的效果:System.IO效果

FileStream fs = new FileStream(@"file.dat", FileMode.Create, FileAccess.Write); 
// and 
FileStream fs = File.Create(@"file.dat"); 

PS:除了靜態函數問題的用法。

回答

3

根據反射器,File.Create(path)只是:

new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.None); 

new FileStream(@"file.dat", FileMode.Create, FileAccess.Write)也得到4096緩衝器 - 所以沒有,它僅僅是FileAccess.ReadWrite而不同。

我不認爲FileAccess.WriteFileAccess.ReadWrite好得多,因爲它們都鎖定了文件 - 但我可能是錯的。

評論:因爲FileShare設置爲None,它是寫你想要他們正確(=我不知道肯定)訪問沒有多大的差別。但是,如果你想Read訪問new FileStream(path, mode, access)的方法是不同的,因爲FileShare設置爲Read作爲默認值。然而,在這種情況下,你想創建一個文件,因此它只是閱讀沒有多大意義;-)

+0

好吧,我反編譯在提出問題之前,還有反射代碼..但我想知道在操作系統端FileAccess.Write和FileAccess.ReadWrite方法之間是否存在任何性能差異? (我剛剛遇到了Win7文件系統的問題,這就是爲什麼我要問......) – Unavailable 2010-08-21 00:10:38

+0

@Bora看到更新:-)雖然不是真的想要你的期待。 – 2010-08-21 00:35:28

+0

無論如何,謝謝你的澄清:) – Unavailable 2010-08-21 01:18:52

2

如果我沒有記錯,File.Create("file.dat")只是打電話給new FileStream("file.dat", FileMode.Create, FileAccess.ReadWrite)

+0

您正確回憶,謝謝,但我試圖到達其他地方.. – Unavailable 2010-08-21 00:15:11