C# Как изменить FileAttributes с нормального на каталог

Мой друг дал мне поврежденную SD-карту, которая показывает папку "DCIM" в виде файла. Я написал консольную программу, чтобы показать мне FileInfo, и он возвращает "Нормальный". Теперь я попытался изменить 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 таким образом? Есть ли другое решение для этого?

1 ответ

Решение

В соответствии с документацией для функции API SetFileAttributes, к которой обращаются File.SetAttributes решает:

Файлы не могут быть преобразованы в каталоги.

Если вы хотите получить информацию с этого устройства, вам придется читать необработанные сектора с помощью низкоуровневого ввода-вывода устройства. Это возможно, но много работы.

Если вы серьезно относитесь к получению информации с этого устройства, не пытайтесь писать на него. Данные повреждены. Попытка изменить данные на этом устройстве, скорее всего, приведет к дальнейшему повреждению того, что там есть. Используйте низкоуровневый считыватель, чтобы прочитать двоичный образ того, что находится в файле на вашем жестком диске. Затем сделайте копию этого файла, и вы сможете покончить с собой.

Конечно, вы можете спросить себя, действительно ли данные на этом диске стоят той работы, которую вы собираетесь потратить, пытаясь восстановить их. Восстановление данных может быть очень утомительно.

Другие вопросы по тегам