একটি ফাইল থেকে কীভাবে একটি একক গুণ (যেমন পঠনযোগ্য) মুছবেন?


84

ধরা যাক, একটি ফাইল নিম্নলিখিত বৈশিষ্ট্য আছে: ReadOnly, Hidden, Archived, Systemআমি কীভাবে কেবল একটি বৈশিষ্ট্য অপসারণ করতে পারি? (উদাহরণস্বরূপ কেবলমাত্র পঠনযোগ্য)

আমি যদি নিম্নলিখিতটি ব্যবহার করি তবে এটি সমস্ত বৈশিষ্ট্য সরিয়ে দেয়:

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

বর্তমান বৈশিষ্ট্যগুলি পড়ুন, আপনাকে যে বৈশিষ্ট্যটি নির্ধারণ করতে হবে তা মাস্ক করুন, বৈশিষ্ট্যটি সেট করুন ...
মিচ Wheat

উত্তর:


109

এমএসডিএন থেকে : আপনি এই জাতীয় কোনও বৈশিষ্ট্য মুছে ফেলতে পারেন

(তবে কেবলমাত্র পড়ার জন্য @ এসএলএল এর উত্তর কেবল সেই বৈশিষ্ট্যের জন্যই ভাল)

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;
    }
}

কি করে ~?
newbieguy

@ নিউবিগুই: এটি অ্যানারি বাইনারি পরিপূরক অপারেটর (ওরফে বিটওয়াইস অপারেটর নয়)। ডকস.মাইক্রোসফট.ইন- ইউএস
স্টিফান স্টিগার

132

ReadOnlyগুণাবলী সম্পর্কিত শিরোনামে আপনার প্রশ্নের উত্তর :

FileInfo fileInfo = new FileInfo(pathToAFile);
fileInfo.IsReadOnly = false;

যে কোনও বৈশিষ্ট্যের উপর নিজেকে নিয়ন্ত্রণ পেতে আপনি File.SetAttributes()পদ্ধতিটি ব্যবহার করতে পারেন । লিঙ্কটি একটি উদাহরণও সরবরাহ করে।


4
এটি দুর্দান্ত কাজ করে! তবে কেবলমাত্র পঠনযোগ্য অ্যাট্রিবিউটের জন্য, (আমি জানি আমি এটি শিরোনামে চেয়েছিলাম তবে আমার অন্যান্য বৈশিষ্ট্যও প্রয়োজন)
মিলমাইক

4
@qxxx: আপনি ঠিক, আমি উল্লেখ হিসাবে আপনি SetAttributes () মেথড ব্যবহার করতে অন্য বৈশিষ্ট্যাবলী পরিবর্তন করতে হবে
SLL

4
ওয়ান-লাইনার হিসাবে: নতুন ফাইলআইএনফো (ফাইলের নাম) {ইসরেডঅনলি = মিথ্যা}। রিফ্রেশ ()
ওহাদ স্নাইডার

4
রিফ্রেশ () প্রয়োজনীয়? এমএসডিএন-এর এই উদাহরণটি পরামর্শ দেয় যে এটি তা নয় এবং আমার কোড (স্বীকারোক্তিতে মনো এর সাথে) কাজ করে যদি আমি এটি না বলি।
entheh

4
রিফ্রেশ () আমার পক্ষেও জরুরি বলে মনে হচ্ছে না।
জেরথের



1

একটি লাইন সমাধানের জন্য (প্রদত্ত যে বর্তমান ব্যবহারকারীটির উল্লিখিত ফাইলটির বৈশিষ্ট্যগুলি পরিবর্তন করতে অ্যাক্সেস রয়েছে) এখানে আমি কীভাবে এটি করব:

ভিবি.নেট

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");

তথ্যসূত্র


এগুলি প্রধান সামগ্রীর পরিবর্তন নয় , এগুলি সামগ্রী সংযোজন এবং এগুলির মধ্যে কোনও স্ট্যাক ওভারফ্লোয়ের স্পিরিটের বিরোধী নয়। এগুলি ভাল সম্পাদনা, তাদের থাকা উচিত।
জর্জ স্টকার

4
এটি আপনার গাড়িতে ত্বকের এক কোয়ার্ট কোথায় যুক্ত করবেন জিজ্ঞাসা করার সমতুল্য বলে মনে হচ্ছে তবে তেল পরিবর্তনের জন্য আপনাকে এটি আপনার ডিলারশিপে নিয়ে যাওয়া উচিত। কেন কেবল একটি ফাইল অ্যাট্রিবিউট বিট ফ্লিপ করতে শেল কমান্ড চালাবেন? উত্তরটি প্রযুক্তিগতভাবে কাজ করে তাই আমি হ্রাস করি নি, তবে আমি হৃদয়ে রেখেছি।
জেএমডি

@ জর্জিস্টকার এটিকে পর্যালোচনা করার জন্য ধন্যবাদ, আমি এটির প্রশংসা করি!
tehDorf

1
/// <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);
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.