স্ট্রিমরাইটার ব্যবহার করে কোনও ফাইলে লাইন যুক্ত করুন


170

আমি আমার ফাইলে লাইন যুক্ত করতে চাই। আমি স্ট্রিম রাইটার ব্যবহার করছি:

StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();

আমার ফাইলটির আউটপুট একে অপরের নীচে বেশ কয়েকটি স্ট্রিং হওয়া উচিত, তবে আমার কেবল একটি সারি রয়েছে, যা এই কোডটি চালানোর সময় প্রতিলিপি হয় ten

স্ট্রাইমাইটারকে কোনও বিদ্যমান ফাইলে সংযুক্ত করার কোনও উপায় আছে কি?


19
সৎকার করতে ভুলবেন না StreamWriter। একটি usingব্লক এটির জন্য আরও ভাল সিনট্যাক্স।
TheCodeKing

1
এটাও কেন আমি স্ট্রিম সম্পর্কে চিন্তা করতে যখন File.AppendAllText ব্যবহার করে একটি ফাইল খুব দ্রুত আপডেট করছেন না পছন্দ হয় - msdn.microsoft.com/en-us/library/ms143356.aspx
ক্রিস

@ দ্য কোড কোডিং - আপনি কি আমাকে কিছু কোড দেখাতে পারেন?
বাষ্প

4
@ ব্লাস্টোusing (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
দ্যকোডকিং

উত্তর:


279

পরিবর্তে এটি ব্যবহার করুন:

new StreamWriter("c:\\file.txt", true);

স্ট্রিম রাইটার কনস্ট্রাক্টরের এই ওভারলোডের সাহায্যে আপনি ফাইলটি সংযোজন করেন বা এটি ওভাররাইট করে থাকেন।

সি # 4 এবং তত উপরে নিম্নলিখিত সিনট্যাক্স সরবরাহ করে, যা কিছু আরও পড়তে পারা যায়:

new StreamWriter("c:\\file.txt", append: true);


13

আমি ধরে নিয়েছি প্রতিবার আপনি যখন ফাইলটিতে কিছু লিখবেন তখন আপনি উপরের সমস্ত কোডটি কার্যকর করছেন । প্রতিবার ফাইলটির স্ট্রিমটি খোলার পরে এর সন্ধানের পয়েন্টারটি শুরুতে অবস্থিত তাই সমস্ত লেখার আগে সেখানে যা ছিল তা ওভাররাইট করে।

আপনি সমস্যাটি দুটি উপায়ে সমাধান করতে পারেন: হয় সুবিধাজনক সাথে

file2 = new StreamWriter("c:/file.txt", true);

বা স্পষ্টভাবে স্ট্রিম পয়েন্টারটি নিজেকে স্থির করে:

file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);

যদি ফাইলটি 10 ​​এমবি থাকে এবং আমি 0 অবস্থান থেকে লিখতে শুরু করি তবে কেবল 10 কেবি, আমি কীভাবে নিশ্চিত করতে পারি যে এই ফাইলটিতে কেবল 10kb ডেটা রয়েছে যা আমি সবে লিখেছি?
জোবাডিনিজ

10

এটা চেষ্টা কর:

StreamWriter file2 = new StreamWriter(@"c:\file.txt", true);
file2.WriteLine(someString);
file2.Close();

7

এটি প্রতিস্থাপন করুন:

StreamWriter file2 = new StreamWriter("c:/file.txt");

এর সাথে:

StreamWriter file2 = new StreamWriter("c:/file.txt", true);

true ইঙ্গিত করে যে এটি পাঠ্যকে সংযোজন করে।



5

আর একটি বিকল্প হ'ল System.IO.File.AppendText ব্যবহার করছে

এটি অন্যরা যে স্ট্রিমরাইটার ওভারলোডগুলি দিয়েছিল তার সমান।

এছাড়াও ফাইল.অপেনডএলটেক্সট স্ট্রিমটি খোলার এবং বন্ধ করার চিন্তা না করেই কিছুটা সহজ ইন্টারফেস দিতে পারে। যদিও আপনার তখন নিজের লাইন ব্রেকগুলি লাগানোর বিষয়ে চিন্তা করতে হবে। :)


5

বেস্টস্ট্রিমের সাথে প্রকৃতপক্ষে কেবল জনের উত্তর (সেপ্টেম্বর 5 '11 এ 9:37 এ) আমার মামলার পক্ষে কাজ করেছে e ধন্যবাদ জন! আমার একটি জিপ সংরক্ষণাগারভুক্ত টেক্সট ফাইলটিতে লাইন যুক্ত করা দরকার ।

using (FileStream zipFS = new FileStream(@"c:\Temp\SFImport\test.zip",FileMode.OpenOrCreate))
{
    using (ZipArchive arch = new ZipArchive(zipFS,ZipArchiveMode.Update))
    {
        ZipArchiveEntry entry = arch.GetEntry("testfile.txt");
        if (entry == null)
        {
            entry = arch.CreateEntry("testfile.txt");
        }
        using (StreamWriter sw = new StreamWriter(entry.Open()))
        {
            sw.BaseStream.Seek(0,SeekOrigin.End);
            sw.WriteLine("text content");
        }
    }
}

3

আরও একটি সহজ উপায় হ'ল File.AppendTextএটি একটি বিদ্যমান ফাইলে ইউটিএফ -8 এনকোডেড পাঠ্য যুক্ত করে, বা যদি নির্দিষ্ট ফাইলটি উপস্থিত না থাকে এবং কোনও নতুন ফাইল ফেরত দেয় তবেSystem.IO.StreamWriter

using (System.IO.StreamWriter sw = System.IO.File.AppendText(logFilePath + "log.txt"))
{                                                
    sw.WriteLine("this is a log");
}

1

এই লাইনটি প্রতিস্থাপন করুন:

StreamWriter sw = new StreamWriter("c:/file.txt");

এই কোড সহ:

StreamWriter sw = File.AppendText("c:/file.txt");

এবং তারপরে পাঠ্য ফাইলটিতে আপনার লাইনটি লিখুন:

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