[英]System.UnauthorizedAccessException in File.Create c#
Edit: I noticed this doesn't happen when I just do: File.WriteAllText(@"C:\Users\(usr)\Documents\Test\Data\test.txt", "0");
编辑:我注意到当我这样做时不会发生这种情况:
File.WriteAllText(@"C:\Users\(usr)\Documents\Test\Data\test.txt", "0");
without Globals.dmp
so evidently it must be something with Path.Combine()
I tried various variations of the composition but with same results.没有
Globals.dmp
很明显它一定是Path.Combine()
我尝试了组合的各种变体,但结果相同。
I want to create a folder and a text file in my c# program made with Visual Studio.我想在用 Visual Studio 制作的 c# 程序中创建一个文件夹和一个文本文件。 What I'm doing is having a check at Form Load to see if the file exists, and if it does not, create the file.
我正在做的是检查表单加载以查看文件是否存在,如果不存在,则创建文件。
I'm doing it like this:我这样做是这样的:
if(!File.Exists(Globals.dmp))
{
File.Create(Globals.dmp);
File.WriteAllText(Globals.dmp, "0");
}
The composition of globals.dmp
is the following: globals.dmp
的组成如下:
public static string dmp = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Constants.dmp);
While Constants.dmp
is like this:而
Constants.dmp
是这样的:
public static string dmp = @"Test\Data\test.txt
This should work, but when I try to run it, Visual studio reports: System.UnauthorizedAccessException: 'Access to the path 'C:\Users\(usr)\Documents\Test\Data\test.txt' is denied.'
这应该可以,但是当我尝试运行它时,Visual Studio 报告:
System.UnauthorizedAccessException: 'Access to the path 'C:\Users\(usr)\Documents\Test\Data\test.txt' is denied.'
The line that fails is: File.Create(Globals.dmp);
失败的行是:
File.Create(Globals.dmp);
I tried putting File.SetAttributes(Globals.dmp, new FileInfo(Globals.dmp).Attributes | FileAttributes.Normal);
我试着把
File.SetAttributes(Globals.dmp, new FileInfo(Globals.dmp).Attributes | FileAttributes.Normal);
above File.Create
but the same thing happens.上面
File.Create
但同样的事情发生了。 Any insight is greatly appreciated.非常感谢任何见解。
Run your visual studio as administrator and see it works or not.以管理员身份运行您的 Visual Studio,看看它是否有效。
I solved the problem by adapting PathCombineAndCanonicalize1()
from the second solution in this question我通过从这个问题的第二个解决方案中调整
PathCombineAndCanonicalize1()
解决了这个问题
What I did is:我所做的是:
public static string PathCombineAndCanonicalize1(string path1, string path2)
{
string combined = Path.Combine(path1, path2);
return combined;
}
public partial class ProgramDirectories
{
public static string directory = @"DillData\";
public static string documentspath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
public static string pathforfiles = PathCombineAndCanonicalize1(documentspath, directory);
public static string sps = PathCombineAndCanonicalize1(pathforfiles, Constants.sps);
}
With Constants.sps="text.txt";
使用
Constants.sps="text.txt";
And then I could easily do:然后我可以很容易地做到:
if (!Directory.Exists(ProgramDirectories.pathforfiles))
{
Directory.CreateDirectory(ProgramDirectories.pathforfiles);
}
if(!File.Exists(ProgramDirectories.sps)
{
File.WriteAllText(ProgramDirectories.sps, "0");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.