当我尝试这样做时:
Directory.CreateDirectory([folderPath]);
File.CreateText([folderPath]);
我有例外 -
System.UnauthorizedAccessException was unhandled by user code
HResult=-2147024891
Message=Access to the path 'C:\[folderPath]' is denied.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
at System.IO.StreamWriter..ctor(String path, Boolean append)
at System.IO.File.CreateText(String path)
at Contest.Service.FileSystem.CreateFileAndFolderForAttempt(IAttempt attempt) in c:\Users\Mif\Documents\Visual Studio 2012\Projects\Contest\Contest.Service\FileSystem.cs:line 33
at Contest.Service.Tests.FileSystemTests.TestCreateFileAndFolderForAttempt() in c:\Users\Mif\Documents\Visual Studio 2012\Projects\Contest\Contest.Service.Tests\UnitTest1.cs:line 32
InnerException:
文件浏览器告诉我:
属性:[tristate / indeterminate复选框]只读(仅适用于文件夹中的文件)
但是Debug.WriteLine(CurrentContestDirectory.Attributes.ToString());
告诉我 - Directory
。而不是readonly属性!
我在Google中查找了“使用C#删除目录上的只读属性”,但所有答案都没有帮助我。 我需要做什么?
所有代码都在使用Windows 8管理员帐户的本地计算机上运行。如果我手动取消选中readonly attrinute,在代码运行后切换回来。
这是一个简单的控制台应用程序。
现在我手动创建文件夹。它默认为只读。
attrib -r C:\ new / s in cmd not working !!!
如果我手动取消选中只读并单击“确定”,则单击“属性” - 只读后退
答案 0 :(得分:1)
尝试使用此代码:
Directory.CreateDirectory(@"c:\newfolder");
File.CreateText(@"c:\newfolder\textfile.txt");
答案 1 :(得分:0)
我会验证运行此代码的应用程序本身在Windows中是否具有适当的权限。例如,右键单击该应用程序,然后单击“以管理员身份运行”
答案 2 :(得分:0)
File.CreateText([folderPath]);
可能是错的。当文件路径实际上是文件夹路径时,任何创建文件(或打开流)的尝试都将以
结束UnauthorizedAccessException
这个例外是非常误导的,并要求你查看所有错误的地方。去过那里,看过它。