Fer*_*X32 5 .net c# directory copy visual-studio-2010
我正在制作一个程序,它可以复制文件夹并将其传输到另一个位置,包括属性、权限、安全设置。
到目前为止,我已经使用了 Attribution,但在权限/安全设置方面遇到了问题。这是我的代码:
Directory.CreateDirectory(Destination);
DirectoryInfo DestAttribute = new DirectoryInfo(Destination);
DestAttribute.Attributes = Source.Attributes; // Copies Attributes from Source to Dest
AuthorizationRuleCollection Rule;
DirectorySecurity DestSecurity = Source.GetAccessControl();
Rule = DestSecurity.GetAccessRules(true, true, typeof(NTAccount));
DestSecurity.AddAccessRule(Rule);
DestAttribute.SetAccessControl(DestSecurity);
Run Code Online (Sandbox Code Playgroud)
任何人有任何建议让这个工作?谢谢大家的帮助。
小智 3
这似乎是以下内容的重复:
(原始问题的代码示例)
FileInfo file1 = new FileInfo(@"c:\test.txt");
FileInfo file2 = new FileInfo(@"c:\test2.txt");
StreamReader sr1 = new StreamReader(file1.Open(FileMode.Open));
StreamWriter sw1 = new StreamWriter(file2.Open(FileMode.Create));
sw1.Write(sr1.ReadToEnd());
sr1.Close();
sw1.Close();
FileSecurity ac1 = file1.GetAccessControl();
ac1.SetAccessRuleProtection(true, true);
file2.SetAccessControl(ac1);
Run Code Online (Sandbox Code Playgroud)
我整理了以下方法,它似乎可以满足您的要求......
private static void FolderCopy(String sourceFolder, String destinationFolder)
{
DirectoryInfo sourceDirectory = new DirectoryInfo(sourceFolder);
DirectoryInfo destinationDirectory;
if (!sourceDirectory.Exists)
{
throw new DirectoryNotFoundException("Source folder not found: " + sourceFolder);
}
if (!Directory.Exists(destinationFolder))
{
destinationDirectory = Directory.CreateDirectory(destinationFolder);
}
else
{
destinationDirectory = new DirectoryInfo(destinationFolder);
}
DirectorySecurity security = sourceDirectory.GetAccessControl();
security.SetAccessRuleProtection(true, true);
destinationDirectory.SetAccessControl(security);
var filesToCopy = sourceDirectory.GetFiles();
foreach (FileInfo file in filesToCopy)
{
String path = Path.Combine(destinationFolder, file.Name);
FileSecurity fileSecurity = file.GetAccessControl();
fileSecurity.SetAccessRuleProtection(true, true);
file.CopyTo(path, false);
FileInfo copiedFile = new FileInfo(path);
copiedFile.SetAccessControl(fileSecurity);
}
}
Run Code Online (Sandbox Code Playgroud)
克里斯
| 归档时间: |
|
| 查看次数: |
9519 次 |
| 最近记录: |