簡體   English   中英

文件中的 System.UnauthorizedAccessException。創建 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# 程序中創建一個文件夾和一個文本文件。 我正在做的是檢查表單加載以查看文件是否存在,如果不存在,則創建文件。
我這樣做是這樣的:

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);
我試着把File.SetAttributes(Globals.dmp, new FileInfo(Globals.dmp).Attributes | FileAttributes.Normal); 上面File.Create但同樣的事情發生了。 非常感謝任何見解。

以管理員身份運行您的 Visual Studio,看看它是否有效。

我通過從這個問題的第二個解決方案中調整PathCombineAndCanonicalize1() 解決了這個問題

我所做的是:

            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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM