파일에 다음 속성이 있다고 가정 해 보겠습니다 ReadOnly, Hidden, Archived, System
..
하나의 속성 만 제거하려면 어떻게해야합니까? (예 : ReadOnly)
다음을 사용하면 모든 속성이 제거됩니다.
IO.File.SetAttributes("File.txt",IO.FileAttributes.Normal)
답변:
에서 MSDN :이 같은 모든 속성을 제거 할 수 있습니다
(그러나 ReadOnly에 대한 @sll의 대답은 해당 속성에만 더 좋습니다)
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;
}
}
~
합니까?
ReadOnly
속성 에 관한 제목의 질문에 대한 답변 :
FileInfo fileInfo = new FileInfo(pathToAFile);
fileInfo.IsReadOnly = false;
속성을 직접 제어하려면 File.SetAttributes()
메소드 를 사용할 수 있습니다 . 링크는 또한 예를 제공합니다.
한 줄 솔루션 (현재 사용자가 언급 된 파일의 속성을 변경할 수있는 액세스 권한이있는 경우)의 경우 다음과 같이 할 수 있습니다.
VB.Net
Shell("attrib file.txt -r")
에 부정적인 기호 수단 remove
과는 r
읽기 전용입니다. 다른 속성도 제거하려면 다음을 수행하십시오.
Shell("attrib file.txt -r -s -h -a")
읽기 전용, 시스템 파일, 숨김 및 보관 속성이 제거됩니다.
이러한 속성을 되돌리려면 방법은 다음과 같습니다.
Shell("attrib file.txt +r +s +h +a")
순서는 중요하지 않습니다.
씨#
Process.Start("cmd.exe", "attrib file.txt +r +s +h +a");
참고 문헌
/// <summary>
/// Addes the given FileAttributes to the given File.
/// It's possible to combine FileAttributes: FileAttributes.Hidden | FileAttributes.ReadOnly
/// </summary>
public static void AttributesSet(this FileInfo pFile, FileAttributes pAttributes)
{
pFile.Attributes = pFile.Attributes | pAttributes;
pFile.Refresh();
}
/// <summary>
/// Removes the given FileAttributes from the given File.
/// It's possible to combine FileAttributes: FileAttributes.Hidden | FileAttributes.ReadOnly
/// </summary>
public static void AttributesRemove(this FileInfo pFile, FileAttributes pAttributes)
{
pFile.Attributes = pFile.Attributes & ~pAttributes;
pFile.Refresh();
}
/// <summary>
/// Checks the given File on the given Attributes.
/// It's possible to combine FileAttributes: FileAttributes.Hidden | FileAttributes.ReadOnly
/// </summary>
/// <returns>True if any Attribute is set, False if non is set</returns>
public static bool AttributesIsAnySet(this FileInfo pFile, FileAttributes pAttributes)
{
return ((pFile.Attributes & pAttributes) > 0);
}
/// <summary>
/// Checks the given File on the given Attributes.
/// It's possible to combine FileAttributes: FileAttributes.Hidden | FileAttributes.ReadOnly
/// </summary>
/// <returns>True if all Attributes are set, False if any is not set</returns>
public static bool AttributesIsSet(this FileInfo pFile, FileAttributes pAttributes)
{
return (pAttributes == (pFile.Attributes & pAttributes));
}
예:
private static void Test()
{
var lFileInfo = new FileInfo(@"C:\Neues Textdokument.txt");
lFileInfo.AttributesSet(FileAttributes.Hidden | FileAttributes.ReadOnly);
lFileInfo.AttributesSet(FileAttributes.Temporary);
var lBool1 = lFileInfo.AttributesIsSet(FileAttributes.Hidden);
var lBool2 = lFileInfo.AttributesIsSet(FileAttributes.Temporary);
var lBool3 = lFileInfo.AttributesIsSet(FileAttributes.Encrypted);
var lBool4 = lFileInfo.AttributesIsSet(FileAttributes.ReadOnly | FileAttributes.Temporary);
var lBool5 = lFileInfo.AttributesIsSet(FileAttributes.ReadOnly | FileAttributes.Encrypted);
var lBool6 = lFileInfo.AttributesIsAnySet(FileAttributes.ReadOnly | FileAttributes.Temporary);
var lBool7 = lFileInfo.AttributesIsAnySet(FileAttributes.ReadOnly | FileAttributes.Encrypted);
var lBool8 = lFileInfo.AttributesIsAnySet(FileAttributes.Encrypted);
lFileInfo.AttributesRemove(FileAttributes.Temporary);
lFileInfo.AttributesRemove(FileAttributes.Hidden | FileAttributes.ReadOnly);
}
이것을 사용하십시오 :
private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
MSDN에서 자세한 내용을 읽으십시오 : http://msdn.microsoft.com/en-us/library/system.io.file.setattributes.aspx