1. ホーム
  2. c#

[解決済み] ファイルから単一の属性(例:ReadOnly)を削除するにはどうすればよいですか?

2023-05-08 02:10:05

質問

あるファイルが次のような属性を持っているとします。 ReadOnly, Hidden, Archived, System . どうすれば1つの属性だけを削除できますか? (例:ReadOnly)

以下のようにすると、すべての属性が削除されます。

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

どのように解決するのですか?

から MSDN : このように、任意の属性を削除することができます。

(ただし、その属性だけなら@sllさんのReadOnlyの答えの方が良い)

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 exists.
        if (!File.Exists(path)) 
        {
            File.Create(path);
        }

        FileAttributes attributes = File.GetAttributes(path);

        if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
        {
            // Make the file RW
            attributes = RemoveAttribute(attributes, FileAttributes.ReadOnly);
            File.SetAttributes(path, attributes);
            Console.WriteLine("The {0} file is no longer RO.", path);
        } 
        else 
        {
            // Make the file RO
            File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
            Console.WriteLine("The {0} file is now RO.", path);
        }
    }

    private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
    {
        return attributes & ~attributesToRemove;
    }
}