System.UnauthorizedAccessException 在 File.Create c#
System.UnauthorizedAccessException in File.Create c#
编辑:我注意到当我这样做时不会发生这种情况:File.WriteAllText(@"C:\Users\(usr)\Documents\Test\Data\test.txt", "0");
没有 Globals.dmp
所以显然它一定是 Path.Combine()
我尝试了各种不同的构图但是结果相同。
我想在我用 Visual Studio 制作的 c# 程序中创建一个文件夹和一个文本文件。我正在做的是检查 Form Load 以查看文件是否存在,如果不存在,则创建文件。
我是这样做的:
if(!File.Exists(Globals.dmp))
{
File.Create(Globals.dmp);
File.WriteAllText(Globals.dmp, "0");
}
globals.dmp
的组成如下:
public static string dmp = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Constants.dmp);
而Constants.dmp
是这样的:
public static string dmp = @"Test\Data\test.txt
这应该可以,但是当我尝试 运行 它时,Visual studio 报告:System.UnauthorizedAccessException: 'Access to the path 'C:\Users\(usr)\Documents\Test\Data\test.txt' is denied.'
失败的行是:File.Create(Globals.dmp);
I尝试将 File.SetAttributes(Globals.dmp, new FileInfo(Globals.dmp).Attributes | FileAttributes.Normal);
放在 File.Create
之上,但同样的事情发生了。非常感谢任何见解。
运行 你的 visual studio 作为管理员,看看它是否有效。
我通过修改 PathCombineAndCanonicalize1()
from the second solution in this question
解决了问题
我做的是:
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);
}
和Constants.sps="text.txt";
然后我可以轻松做到:
if (!Directory.Exists(ProgramDirectories.pathforfiles))
{
Directory.CreateDirectory(ProgramDirectories.pathforfiles);
}
if(!File.Exists(ProgramDirectories.sps)
{
File.WriteAllText(ProgramDirectories.sps, "0");
}
编辑:我注意到当我这样做时不会发生这种情况:File.WriteAllText(@"C:\Users\(usr)\Documents\Test\Data\test.txt", "0");
没有 Globals.dmp
所以显然它一定是 Path.Combine()
我尝试了各种不同的构图但是结果相同。
我想在我用 Visual Studio 制作的 c# 程序中创建一个文件夹和一个文本文件。我正在做的是检查 Form Load 以查看文件是否存在,如果不存在,则创建文件。
我是这样做的:
if(!File.Exists(Globals.dmp))
{
File.Create(Globals.dmp);
File.WriteAllText(Globals.dmp, "0");
}
globals.dmp
的组成如下:
public static string dmp = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Constants.dmp);
而Constants.dmp
是这样的:
public static string dmp = @"Test\Data\test.txt
这应该可以,但是当我尝试 运行 它时,Visual studio 报告:System.UnauthorizedAccessException: 'Access to the path 'C:\Users\(usr)\Documents\Test\Data\test.txt' is denied.'
失败的行是:File.Create(Globals.dmp);
I尝试将 File.SetAttributes(Globals.dmp, new FileInfo(Globals.dmp).Attributes | FileAttributes.Normal);
放在 File.Create
之上,但同样的事情发生了。非常感谢任何见解。
运行 你的 visual studio 作为管理员,看看它是否有效。
我通过修改 PathCombineAndCanonicalize1()
from the second solution in this question
我做的是:
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);
}
和Constants.sps="text.txt";
然后我可以轻松做到:
if (!Directory.Exists(ProgramDirectories.pathforfiles))
{
Directory.CreateDirectory(ProgramDirectories.pathforfiles);
}
if(!File.Exists(ProgramDirectories.sps)
{
File.WriteAllText(ProgramDirectories.sps, "0");
}