私の友人が、「DCIM」フォルダをファイルとして表示する破損した SD カードをくれました。FileInfo を表示するコンソール プログラムを作成したところ、"Normal" が返されました。サンプルのように、FileAttributes を「Normal」から「Directory」に変更しようとしました: http://msdn.microsoft.com/de-de/library/system.io.file.setattributes%28v=vs.110% 29.aspx
static void Main(string[] args)
{
var path = "O://DCIM";
FileAttributes attributes = File.GetAttributes(path);
attributes = RemoveAttribute(attributes, FileAttributes.Normal);
var attr = attributes | FileAttributes.Directory;
File.SetAttributes(path, attr);
var fi = new FileInfo(path);
Console.WriteLine(fi.Name + " -- " + fi.Attributes);
Console.ReadKey();
}
private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
{
return attributes & ~attributesToRemove;
}
プログラムは期待どおりに実行されます。割り当てられる前に attr をチェックすると、「ディレクトリ」が返されます。しかし、結局のところ、FileAttributes はまだ「通常」です。
この方法で FileAttributes を変更することは可能ですか? これを行う別の解決策はありますか?