对于我的WPF应用程序,我必须创建包含图像文件的文件夹,例如:C:\ Pearl \ Src \ TEMP。稍后当不需要这些文件时,我将以编程方式删除文件夹。但我得到“拒绝进入路径”。我还尝试为创建的临时文件夹分配访问权限,但没有多大用处。
using System.IO;
var activeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var dInfo = Directory.GetParent(Path.GetDirectoryName(activeDir);
var dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(@"ATSDEV\ABCD", FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity); // Set the new access settings.
var ImageDir = Path.Combine(dInfo.ToString(), "TEMP");
System.IO.Directory.CreateDirectory(ImageDir, dSecurity);
答案 0 :(得分:8)
在Vista +中,您不应该写入正在执行的进程的安装文件夹或父文件夹。相反,您应该考虑写入User的AppData文件夹中的子目录,因为这更合适,并且不会导致权限问题。
您可以通过Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)获取相应的文件夹。
答案 1 :(得分:2)
我也有问题,因此我在这篇文章上遇到了磕磕绊绊。我在复制/删除之前和之后添加了以下代码行。
删除强>
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
复制强>
File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);
答案 2 :(得分:1)
或者您可以使用Path.GetTempPath()
获取临时目录的路径并在其中创建临时数据。
使用Temp的好处是,如果您忘记/无法清理它,当驱动器空间很慢时,系统可以帮助您清理它。