none
VB.Net, Отключить файлу присвоение атрибута. RRS feed

  • Общие обсуждения

  • Доброго дня!

    Есть файл сторонней программы и он из себя представляет zip архив. Внутри него есть набор файлов не имеющих не каких атрибутов. Мне нужно извлечь из архива файл - обновить в нем данные и обратно отравить в архив. Но как только я его извлекаю ОС присваивает ему атрибут "A" и если сразу же его отправить архив и открыть сам архив в той программе то выходит ошибка "не верная структура файла". Я пытаюсь автоматизировать обновление данных в файле. Как отключить присвоение атрибута к файлу средствами VB.Net/C# ? Какой именно метод отвечает за данную операцию?

    (Мне пока нельзя загружать фото)

    /Forums/getfile/1617239


    4 сентября 2020 г. 9:09

Все ответы

  • Здравствуйте,

    Предотвратить не знаю возможо ли, но можете как обходной вариант решения этот атрибут убрать используя SetAttributes

    К примеру если проставить Normal, убираются все атрибуты:

    IO.File.SetAttributes("File.txt",IO.FileAttributes.Normal)

    Или же в примере по ссылке можно убрать конкретный используя RemoveAttribute:

    using System;
    using System.IO;
    using System.Text;
    
    class Test
    {
        public static void Main()
        {
            string path = @"c:\temp\MyTest.txt";
    
            // Create the file if it does not exist.
            if (!File.Exists(path))
            {
                File.Create(path);
            }
    
            FileAttributes attributes = File.GetAttributes(path);
    
            if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
            {
                // Show the file.
                attributes = RemoveAttribute(attributes, FileAttributes.Hidden);
                File.SetAttributes(path, attributes);
                Console.WriteLine("The {0} file is no longer hidden.", path);
            }
            else
            {
                // Hide the file.
                File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
                Console.WriteLine("The {0} file is now hidden.", path);
            }
        }
    
        private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
        {
            return attributes & ~attributesToRemove;
        }
    }



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


    4 сентября 2020 г. 10:14
    Модератор
  • Не сработало.. я перепробовал все атрибуты в надежде что сработает хоть один вариант, получается выход только один - каким то образом избавить файл от атрибута вообще. 

    pixs(точка)ru/image/bkvAZ


    • Изменено Trap_World 4 сентября 2020 г. 11:05
    4 сентября 2020 г. 10:26
  • Хорошо, это через Normal, а если по второму варианту, через RemoveAttribute убрать конкретный атрибут?


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


    4 сентября 2020 г. 11:42
    Модератор
  • тоже пробовал, не сработало.

    если смотреть свойства файла внутри архиватора в моем случае 7zip - там строчки "атрибут" нет вообще у файла и она появляется после того как извлеку и сразу отправлю в архив.

    • Изменено Trap_World 4 сентября 2020 г. 12:08
    4 сентября 2020 г. 11:53
  • A вы уверены, что проблема именно в атрибуте? Если не обновлять данные просто достать файл, затем закинуть в обратно в архив, чтоб к нему добавился атрибут Archived и при этом в файле ничего не менять, проблема тоже наблюдается?

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

    4 сентября 2020 г. 14:59
    Модератор
  • да проблема остается, а если открыть в самом блокноте архив там не все но можно найти строчку и заменить ее то все работает как часы. проблема только в одном - как убрать вообще атрибут из файла. это возможно? хотя сама программа тоже как то снимает атрибуты и архивирует..

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

    • Изменено Trap_World 4 сентября 2020 г. 16:02
    4 сентября 2020 г. 15:36