ফাইলগুলি থেকে পড়া এবং লেখার সহজ উপায়


342

সি # তে ফাইলগুলি ( পাঠ্য ফাইলগুলি , বাইনারি নয়) পড়ার এবং লেখার বিভিন্ন উপায় রয়েছে ।

আমার কেবল এমন কিছু দরকার যা সহজ এবং কোডটি ন্যূনতম পরিমাণে ব্যবহার করে, কারণ আমি আমার প্রকল্পে অনেকগুলি ফাইল নিয়ে কাজ করব। আমার কেবল কিছু দরকার কারণ stringযেহেতু আমার দরকার তা stringএস পড়তে এবং লিখতে ।

উত্তর:


545

File.ReadAllText এবং File.WriteAllText ব্যবহার করুন ।

এটি সহজ হতে পারে না ...

এমএসডিএন উদাহরণ:

// Create a file to write to.
string createText = "Hello and Welcome" + Environment.NewLine;
File.WriteAllText(path, createText);

// Open the file to read from.
string readText = File.ReadAllText(path);

2
সত্যিই খুব সহজ, তবে কেন প্রশ্ন পোস্ট করার দরকার ছিল? ওপি সম্ভবত আমার মতো এবং 17 টি উগ্রবিদদের মতো ছিল, "লাইন" দিকটি লাইন ধরে দেখছিল string.Write(filename)। কেন মাইক্রোসফ্টস সমাধান আমার চেয়ে সহজ / সহজ?
রোল্যান্ড

7
@ রোল্যান্ড, ইননেট, ফাইল হ্যান্ডলিং ফ্রেমওয়ার্ক দ্বারা সরবরাহ করা হয়েছে, ভাষাগুলি নয় (উদাহরণস্বরূপ ফাইলগুলি ডিক্লেয়ার এবং ম্যানিপুলেট করার জন্য কোনও সি # কীওয়ার্ড নেই)। স্ট্রিংগুলি একটি আরও সাধারণ ধারণা, এটি সাধারণ যে এটি সি # এর অংশ। সুতরাং এটি স্বাভাবিক যে ফাইলগুলি স্ট্রিং সম্পর্কে জানে তবে বিপরীত নয়।
ভিসি 74

এক্সএমএল সি # তে ডেটাটাইপগুলি সহ একটি সাধারণ ধারণা এবং এখানে আমরা উদাহরণস্বরূপ XMLDocament.Save (ফাইলের নাম) পাই। তবে অবশ্যই পার্থক্যটি হ'ল সাধারণত একটি এক্সএমএল অবজেক্ট একটি ফাইলের সাথে মিলে যায়, যখন বেশ কয়েকটি স্ট্রিং একটি ফাইল তৈরি করে।
রোল্যান্ড 13

7
@ রোল্যান্ড যদি আপনি সমর্থন করতে চান তবে আপনি "foo".Write(fileName)সহজেই এর জন্য এক্সটেনশন তৈরি করতে পারেন public static Write(this string value, string fileName) { File.WriteAllText(fileName, value);}এবং এটি আপনার প্রকল্পগুলিতে ব্যবহার করতে পারেন।
আলেক্সি লেভেনকভ

1
ফাইলও রয়েছে.ওরাইটআললাইনস (ফাইলের নাম, স্ট্রিং [])
মিচ গম

163

উপরন্তু করতে File.ReadAllText, File.ReadAllLinesএবং File.WriteAllText(এবং থেকে অনুরূপ সাহায্যকারী Fileবর্গ) দেখানো অন্য উত্তর আপনি ব্যবহার করতে পারেন StreamWriter/ StreamReaderক্লাস।

একটি পাঠ্য ফাইল রচনা:

using(StreamWriter writetext = new StreamWriter("write.txt"))
{
    writetext.WriteLine("writing in text file");
}

একটি পাঠ্য ফাইল পড়া:

using(StreamReader readtext = new StreamReader("readme.txt"))
{
   string readText = readtext.ReadLine();
}

মন্তব্য:

  • readtext.Dispose()পরিবর্তে আপনি ব্যবহার করতে পারেন using, তবে এটি ব্যতিক্রম ক্ষেত্রে ফাইল / পাঠক / লেখককে বন্ধ করবে না
  • সচেতন থাকুন যে আপেক্ষিক পথটি বর্তমান চলমান ডিরেক্টরি সম্পর্কিত। আপনি নিখুঁত পাথ ব্যবহার / নির্মাণ করতে চাইতে পারেন।
  • "কেন ফাইল ফাইলের জন্য ডেটা লেখা হয় না" এর খুব সাধারণ কারণ অনুপস্থিত using/ Closeহ'ল।

3
নিশ্চিত করুন using- যেমন অন্যান্য উত্তর দেখানো আপনার স্ট্রীমগুলিকে stackoverflow.com/a/7571213/477420
আলেক্সেই Levenkov

5
স্ট্রিম রাইটার এবং স্ট্রিমরিডারusing System.IO; ব্যবহার করা দরকার ।
ফ্যাট

1
এটিও লক্ষ করা উচিত যে ফাইলটি যদি অস্তিত্বহীন থাকে তবে লিখনলাইনের চেষ্টা করার সময় স্ট্রিমাইটার ফাইলটি তৈরি করবে। এই ক্ষেত্রে Writ.txt তৈরি করা হবে যদি WritLine ডাকার সময় এটি উপস্থিত না থাকে।
দ্যমিল্ডম্যান

3
আরও লক্ষণীয় যে, ফাইলটিতে পাঠ্য সংযোজন করার জন্য একটি ওভারলোড রয়েছে: new StreamWriter("write.txt", true)ফাইল উপস্থিত না থাকলে এটি একটি ফাইল তৈরি করবে, অন্যথায় এটি বিদ্যমান ফাইলটিতে সংযোজন করবে।
এরিকিনারি

আরও লক্ষণীয় যে আপনি যদি ফাইল স্ট্রিম দিয়ে কনস্ট্রাকশনে স্ট্রিমডার এবং স্ট্রিমাইটার ব্যবহার করেন (ফাইলের পরিবর্তে এটি পাস করুন) আপনি কেবল-পঠন মোড এবং / বা ভাগ করা মোডে ফাইলগুলি খুলতে পারেন।
সাইমন জাইক্স

18
FileStream fs = new FileStream(txtSourcePath.Text,FileMode.Open, FileAccess.Read);
using(StreamReader sr = new StreamReader(fs))
{
   using (StreamWriter sw = new StreamWriter(Destination))
   {
            sw.writeline("Your text");
    }
}

1
কেন আপনি fsশেষে বিতরণ করবেন না ?
লাকলিইকি

1
@ লাকিলিকি কারণ স্ট্রিমরিডার আপনার পক্ষে তা করে। ২ য় ব্যবহার করে বাসা
বাঁধাই

তুমি কি ব্যাখ্যা করতে পারো? স্ট্রিমার্ডার কেন fs নিষ্পত্তি করবে ?? এটি কেবলমাত্র যতদূর আমি দেখতে পাচ্ছি সেরার নিষ্পত্তি করতে পারে। আমাদের এখানে তৃতীয়টির বিবরণ ব্যবহারের দরকার আছে?
ফিল্ম

আপনি কখনই কোনও ব্যবহারের বিবৃতিতে কোনও বস্তু নিষ্পত্তি করবেন না, যখন বিবৃতিটি ফিরে আসবে তখন ডিসপোজ পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল হয়ে যায় এবং বিবৃতি বাসা বাঁধে বা না হয়, তাতে কিছু যায় আসে না, শেষ পর্যন্ত, কল স্ট্যাকের মধ্যে সবকিছু অর্ডার করা হয়।
প্যাট্রিক ফোর্সবার্গ

11
using (var file = File.Create("pricequote.txt"))
{
    ...........                        
}

using (var file = File.OpenRead("pricequote.txt"))
{
    ..........
}

আপনি একবার এটি সম্পন্ন হয়ে গেলে, সহজ, সহজ এবং নিষ্পত্তি / পরিষ্কার করে দেয়।


10

কোনও ফাইল থেকে পড়া এবং কোনও ফাইলে লেখার সবচেয়ে সহজ উপায়:

//Read from a file
string something = File.ReadAllText("C:\\Rfile.txt");

//Write to a file
using (StreamWriter writer = new StreamWriter("Wfile.txt"))
{
    writer.WriteLine(something);
}

5
File.WriteAllTextঅংশ লেখার জন্য নয় কেন ?
পিটার মর্টেনসেন

9

@AlexeiLevenkov আমাকে অন্য "সবচেয়ে সহজ উপায়" যথা দিকে তাক এক্সটেনশন পদ্ধতি । এটি সামান্য কোডিং লাগে, তারপরে পড়ার / লেখার নিখুঁততম সহজ উপায় সরবরাহ করে, এটি আপনার ব্যক্তিগত প্রয়োজন অনুসারে বিভিন্নতা তৈরি করার নমনীয়তা সরবরাহ করে। এখানে একটি সম্পূর্ণ উদাহরণ:

এটি stringপ্রকারে এক্সটেনশন পদ্ধতিটি সংজ্ঞায়িত করে । মনে রাখবেন যে কেবলমাত্র অতিরিক্ত জিনিসটি কী-ওয়ার্ড সহ যুক্তিযুক্ত thisতা হ'ল এটি সেই পদ্ধতির সাথে সংযুক্ত সেই বস্তুর উল্লেখ করে। শ্রেণীর নাম কিছু যায় আসে না; শ্রেণি এবং পদ্ধতি অবশ্যই ঘোষণা করতে হবে static

using System.IO;//File, Directory, Path

namespace Lib
{
    /// <summary>
    /// Handy string methods
    /// </summary>
    public static class Strings
    {
        /// <summary>
        /// Extension method to write the string Str to a file
        /// </summary>
        /// <param name="Str"></param>
        /// <param name="Filename"></param>
        public static void WriteToFile(this string Str, string Filename)
        {
            File.WriteAllText(Filename, Str);
            return;
        }

        // of course you could add other useful string methods...
    }//end class
}//end ns

এটি কীভাবে ব্যবহার করবেন তা string extension methodনোট করুন যে এটি স্বয়ংক্রিয়ভাবে এইগুলিকে বোঝায় class Strings:

using Lib;//(extension) method(s) for string
namespace ConsoleApp_Sandbox
{
    class Program
    {
        static void Main(string[] args)
        {
            "Hello World!".WriteToFile(@"c:\temp\helloworld.txt");
            return;
        }

    }//end class
}//end ns

আমি নিজেই এটি কখনও খুঁজে পেতাম না তবে এটি দুর্দান্ত কাজ করে, তাই আমি এটি ভাগ করে নিতে চাই। আনন্দ কর!


7

ফাইলগুলি লেখা এবং পড়ার জন্য এগুলি সেরা এবং সর্বাধিক ব্যবহৃত পদ্ধতি:

using System.IO;

File.AppendAllText(sFilePathAndName, sTextToWrite);//add text to existing file
File.WriteAllText(sFilePathAndName, sTextToWrite);//will overwrite the text in the existing file. If the file doesn't exist, it will create it. 
File.ReadAllText(sFilePathAndName);

পুরানো উপায়, যা আমাকে কলেজে পড়ানো হয়েছিল তা ছিল স্ট্রিম রিডার / স্ট্রিম রাইটার ব্যবহার করা, তবে ফাইল আই / ও পদ্ধতিগুলি কম আড়ম্বরপূর্ণ এবং কোডের কম লাইনের প্রয়োজন। আপনি "ফাইল" টাইপ করতে পারেন। আপনার আইডিইতে (নিশ্চিত করুন যে আপনি সিস্টেমটি অন্তর্ভুক্ত করেছেন I IO আমদানি বিবৃতি) এবং উপলভ্য সমস্ত পদ্ধতি দেখুন। উইন্ডোজ ফর্ম অ্যাপ্লিকেশন ব্যবহার করে টেক্সট ফাইলগুলিতে /। থেকে স্ট্রিং পড়ার / লেখার উদাহরণ নীচে দেওয়া হয়েছে।

বিদ্যমান ফাইলে পাঠ্য যুক্ত করুন:

private void AppendTextToExistingFile_Click(object sender, EventArgs e)
{
    string sTextToAppend = txtMainUserInput.Text;
    //first, check to make sure that the user entered something in the text box.
    if (sTextToAppend == "" || sTextToAppend == null)
    {MessageBox.Show("You did not enter any text. Please try again");}
    else
    {
        string sFilePathAndName = getFileNameFromUser();// opens the file dailog; user selects a file (.txt filter) and the method returns a path\filename.txt as string.
        if (sFilePathAndName == "" || sFilePathAndName == null)
        {
            //MessageBox.Show("You cancalled"); //DO NOTHING
        }
        else 
        {
            sTextToAppend = ("\r\n" + sTextToAppend);//create a new line for the new text
            File.AppendAllText(sFilePathAndName, sTextToAppend);
            string sFileNameOnly = sFilePathAndName.Substring(sFilePathAndName.LastIndexOf('\\') + 1);
            MessageBox.Show("Your new text has been appended to " + sFileNameOnly);
        }//end nested if/else
    }//end if/else

}//end method AppendTextToExistingFile_Click

ফাইল এক্সপ্লোরার / ওপেন ফাইল ডায়ালগের মাধ্যমে ব্যবহারকারীর কাছ থেকে ফাইলের নাম পান (বিদ্যমান ফাইলগুলি নির্বাচন করার জন্য আপনার এটির প্রয়োজন হবে)।

private string getFileNameFromUser()//returns file path\name
{
    string sFileNameAndPath = "";
    OpenFileDialog fd = new OpenFileDialog();
    fd.Title = "Select file";
    fd.Filter = "TXT files|*.txt";
    fd.InitialDirectory = Environment.CurrentDirectory;
    if (fd.ShowDialog() == DialogResult.OK)
    {
        sFileNameAndPath = (fd.FileName.ToString());
    }
    return sFileNameAndPath;
}//end method getFileNameFromUser

বিদ্যমান ফাইল থেকে পাঠ্য পান:

private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
    string sFileNameAndPath = getFileNameFromUser();
    txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}

5

বা, যদি আপনি সত্যিই লাইনগুলি সম্পর্কে থাকেন:

System.IO.File এ স্ট্যাটিক পদ্ধতি রাইটিংএললাইন রয়েছে , যাতে আপনি এটি করতে পারেন:

IList<string> myLines = new List<string>()
{
    "line1",
    "line2",
    "line3",
};

File.WriteAllLines("./foo", myLines);

5

আপনি পড়তে চান এমন কোনও ফাইলে ব্রাউজ করতে ওপেনফায়ালডায়লগ নিয়ন্ত্রণ ব্যবহার করতে পড়তে ভাল। নীচের কোডটি সন্ধান করুন:

usingফাইলগুলি পড়তে নিম্নলিখিত বিবৃতিটি যুক্ত করতে ভুলবেন না :using System.IO;

private void button1_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
         textBox1.Text = File.ReadAllText(openFileDialog1.FileName);  
    }
}

ফাইল লিখতে আপনি পদ্ধতিটি ব্যবহার করতে পারেন File.WriteAllText


2
     class Program
    { 
         public static void Main()
        { 
            //To write in a txt file
             File.WriteAllText("C:\\Users\\HP\\Desktop\\c#file.txt", "Hello and Welcome");

           //To Read from a txt file & print on console
             string  copyTxt = File.ReadAllText("C:\\Users\\HP\\Desktop\\c#file.txt");
             Console.Out.WriteLine("{0}",copyTxt);
        }      
    }

1

আপনি যা খুঁজছেন File, StreamWriterএবং StreamReaderক্লাস।


6
খুব অসহায় উত্তর। এর অর্থ ওপি এখন উত্তর খুঁজে পাওয়ার আশায় এই শর্তাদি গুগল করতে হবে go সেরা উত্তর একটি উদাহরণ।
tno2007

0
private void Form1_Load(object sender, EventArgs e)
    {
        //Write a file
        string text = "The text inside the file.";
        System.IO.File.WriteAllText("file_name.txt", text);

        //Read a file
        string read = System.IO.File.ReadAllText("file_name.txt");
        MessageBox.Show(read); //Display text in the file
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.