2016-11-24 115 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

相关问题