2016-11-24 121 views
0
DirectoryInfo di = Directory.CreateDirectory(precombine); // I am creating a new directory. 

BinaryWriter write = new BinaryWriter(File.Open(di.FullName, FileMode.Create)); // I want to open a file in it 

write.Write(buffer); // and then I want to write in it. 

但是,我得到一個錯誤,沒有任何權限寫入它。我如何爲用戶創建一個新目錄,然後將用戶的數據寫入其中?謝謝。創建一個新目錄並寫入一個文件

+0

如果您可以選擇在哪裏創建目錄,那麼選擇一個用戶具有寫權限的目錄 - 例如用戶文檔文件夾。 – PaulF

+0

它創建目錄沒有問題,但之後它不能寫入新創建的目錄。但是,如果我使用已經存在的目錄而不是創建一個新目錄,那麼它會寫入數據。 –

+0

@CemAytekin注意:如果你有一個錯誤,*總是*發佈確切的錯誤本身,不只是描述錯誤或說什麼。 – Jim

回答

1

看起來你可能會丟失文件名 - 「 di.FullName「將提供您創建的目錄的完整路徑名--File.Open需要一個文件名。

BinaryWriter write = new BinaryWriter(File.Open(Path.Combine(di.FullName, <FILE NAME HERE>), FileMode.Create)); 

在你的代碼,File.Open將試圖創建具有相同的名稱爲您剛剛創建的目錄中的文件 - 所以你沒有權限。

+0

所以我該如何解決這個問題? –

+0

上面的代碼顯示瞭如何解決該問題 - 您需要將文件名附加到目錄名稱。 – PaulF

+0

當我把現有的路徑放入File.Open時,它工作正常。 –

0

如果你有麻煩寫權限 「以管理員身份運行」

string rootPath = @"C:\FileSystem\"; 
string fileName = "data.txt"; 
if (!Directory.Exists(rootPath)) 
Directory.CreateDirectory(rootPath); 

File.AppendAllText(Path.Combine(rootPath , fileName), "Test"); 
File.AppendAllText(Path.Combine(rootPath , fileName), "Test2"); 

對於底部行> Environment.NewLine> \ n

File.AppendAllText(Path.Combine(rootPath , fileName), "Test2"+Environment.NewLine); 
+0

我試過了,它仍然說「訪問路徑被拒絕」 –

+0

我認爲應該是_「Path.Combine(rootPath,fileName)」_ – PaulF

+0

@CemAytekin:你在哪裏創建目錄? – PaulF

相關問題