我在複製文件時遇到了問題,因爲其他業務流程在任一文件上設置了只讀標誌。我不想觸摸源代碼,但始終將目標設置爲讀取/寫入。爲什麼「myFileInfo.IsReadOnly = false;」錯誤地設置了其他屬性
這是我得到了下來縮減到一個簡單的控制檯應用程序的代碼:
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離線)。
爲什麼要設置這些附加屬性?我如何解決它?