我在复制文件时遇到问题,因为另一个业务流程在任一文件上设置了只读标志。我不想触摸源,但总是将 dest 作为读/写。
这是我精简为一个简单的控制台应用程序的代码:
using System.IO;
namespace TrialConsole
{
class Program
{
static void Main(string[] args)
{
string fileSrc = "Src.txt";
string fileDest = "Dest.txt";
FileInfo destFileInfo = new FileInfo(fileDest);
if (destFileInfo.Exists && destFileInfo.IsReadOnly)
destFileInfo.IsReadOnly = false;
Directory.CreateDirectory(destFileInfo.DirectoryName);
(new FileInfo(fileSrc)).CopyTo(fileDest, true);
destFileInfo.IsReadOnly = false;
}
}
}
要运行它,您还需要在工作目录中创建一个 Src.txt。
当我第一次运行这似乎没有发生。Dest.txt 没有出现。它第二次抱怨目标文件是只读的。
只有当我在资源管理器中显示隐藏和系统文件时,我才能看到 Dest.txt,但它具有 HSAO 设置的属性(O 表示 NTFS 中的脱机)。
为什么要设置这些附加属性?我如何解决它?