คำถามติดแท็ก streamreader

21
วิธีอ่านไฟล์ข้อความของทรัพยากรที่ฝังตัว
ฉันจะอ่านทรัพยากรที่ฝังตัว (ไฟล์ข้อความ) โดยใช้StreamReaderและส่งคืนเป็นสตริงได้อย่างไร สคริปต์ปัจจุบันของฉันใช้แบบฟอร์ม Windows และกล่องข้อความที่ช่วยให้ผู้ใช้สามารถค้นหาและแทนที่ข้อความในไฟล์ข้อความที่ไม่ได้ฝังตัว private void button1_Click(object sender, EventArgs e) { StringCollection strValuesToSearch = new StringCollection(); strValuesToSearch.Add("Apple"); string stringToReplace; stringToReplace = textBox1.Text; StreamReader FileReader = new StreamReader(@"C:\MyFile.txt"); string FileContents; FileContents = FileReader.ReadToEnd(); FileReader.Close(); foreach (string s in strValuesToSearch) { if (FileContents.Contains(s)) FileContents = FileContents.Replace(s, stringToReplace); } StreamWriter FileWriter …

7
การกำจัดสตรีมปิดสตรีมหรือไม่
ฉันกำลังส่งกระแสข้อมูลไปยังวิธีการเขียนบนและในวิธีการเหล่านั้นฉันกำลังใช้ตัวอ่านไบนารี / wrtier เมื่อผู้อ่าน / ผู้เขียนได้รับการกำจัดไม่ว่าจะโดยusingหรือเพียงแค่เมื่อไม่มีการอ้างอิงสตรีมก็ปิดเช่นกัน ?? ฉันจะส่ง BinaryReader / Writer แต่ฉันใช้ StreamReader ด้วย (บางทีฉันควรจะไปรอบ ๆ นั้นฉันแค่ใช้มันสำหรับ GetLine และ ReadLine) นี่เป็นปัญหาค่อนข้างมากหากปิดสตรีมทุกครั้งที่ผู้เขียน / ผู้อ่านปิด
166 c#  stream  streamreader 

7
วิธีการค้นหาและแทนที่ข้อความในไฟล์ด้วย C #
รหัสของฉันจนถึงตอนนี้ StreamReader reading = File.OpenText("test.txt"); string str; while ((str = reading.ReadLine())!=null) { if (str.Contains("some text")) { StreamWriter write = new StreamWriter("test.txt"); } } ฉันรู้วิธีค้นหาข้อความ แต่ฉันไม่มีความคิดเกี่ยวกับวิธีการแทนที่ข้อความในไฟล์ด้วยตัวฉันเอง

5
ฉันควรจะเรียก Close () หรือ Dispose () สำหรับวัตถุ stream หรือไม่
การเรียนการสอนเช่นStream, StreamReader, StreamWriterฯลฯ ดำเนินการIDisposableอินเตอร์เฟซ นั่นหมายความว่าเราสามารถเรียกDispose()ใช้เมธอดบนวัตถุของคลาสเหล่านี้ พวกเขายังได้กำหนดวิธีการที่เรียกว่าpublic Close()ทีนี้ฉันจะโทรไปหาอะไรเมื่อฉันทำกับวัตถุแล้ว ถ้าฉันโทรหาทั้งคู่ รหัสปัจจุบันของฉันคือ: using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { using (StreamWriter writer = new StreamWriter(filename)) { int chunkSize = 1024; while (!reader.EndOfStream) { char[] buffer = new char[chunkSize]; int count = reader.Read(buffer, 0, chunkSize); if (count != …

2
การแปลงไฟล์เป็น Base64String และกลับมาอีกครั้ง
ชื่อบอกทุกอย่าง: ฉันอ่านในไฟล์เก็บถาวร tar.gz เช่นนั้น แบ่งไฟล์ออกเป็นอาร์เรย์ของไบต์ แปลงไบต์เหล่านั้นเป็นสตริง Base64 แปลงสตริง Base64 นั้นกลับเป็นอาร์เรย์ของไบต์ เขียนไบต์เหล่านั้นกลับเข้าไปในไฟล์ tar.gz ใหม่ ฉันสามารถยืนยันได้ว่าทั้งสองไฟล์มีขนาดเท่ากัน (วิธีการด้านล่างนี้จะคืนค่าจริง) แต่ฉันไม่สามารถแยกเวอร์ชันสำเนาได้อีกต่อไป ฉันพลาดอะไรไปรึเปล่า? Boolean MyMethod(){ using (StreamReader sr = new StreamReader("C:\...\file.tar.gz")) { String AsString = sr.ReadToEnd(); byte[] AsBytes = new byte[AsString.Length]; Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length); String AsBase64String = Convert.ToBase64String(AsBytes); byte[] tempBytes = Convert.FromBase64String(AsBase64String); File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes); …

11
การอ่านไฟล์ข้อความขนาดใหญ่พร้อมสตรีมใน C #
ฉันมีงานที่น่ารักในการหาวิธีจัดการไฟล์ขนาดใหญ่ที่โหลดลงในโปรแกรมแก้ไขสคริปต์ของแอปพลิเคชันของเรา (เหมือนกับVBAสำหรับผลิตภัณฑ์ภายในของเราสำหรับมาโครด่วน) ไฟล์ส่วนใหญ่มีขนาดประมาณ 300-400 KB ซึ่งโหลดได้ดี แต่เมื่อพวกเขาไปเกิน 100 MB กระบวนการนี้ก็มีช่วงเวลาที่ยากลำบาก (ตามที่คุณคาดหวัง) สิ่งที่เกิดขึ้นคือไฟล์ถูกอ่านและถูกส่งไปยัง RichTextBox ซึ่งจะถูกนำทางไป - อย่ากังวลกับส่วนนี้มากเกินไป นักพัฒนาที่เขียนโค้ดเริ่มต้นเพียงแค่ใช้ StreamReader และทำ [Reader].ReadToEnd() ซึ่งอาจใช้เวลาสักพักจึงจะเสร็จสมบูรณ์ งานของฉันคือทำลายโค้ดนี้ออกอ่านเป็นชิ้น ๆ เป็นบัฟเฟอร์และแสดงแถบความคืบหน้าพร้อมตัวเลือกในการยกเลิก สมมติฐานบางประการ: ไฟล์ส่วนใหญ่จะมีขนาด 30-40 MB เนื้อหาของไฟล์เป็นข้อความ (ไม่ใช่ไบนารี) บางส่วนเป็นรูปแบบ Unix บางส่วนเป็น DOS เมื่อดึงเนื้อหามาแล้วเราจะหาสิ่งที่ใช้เทอร์มิเนเตอร์ ไม่มีใครกังวลเมื่อโหลดเวลาที่ใช้ในการแสดงผลใน richtextbox มันเป็นเพียงการโหลดข้อความเริ่มต้น ตอนนี้สำหรับคำถาม: ฉันสามารถใช้ StreamReader จากนั้นตรวจสอบคุณสมบัติ Length (ดังนั้น ProgressMax) และออก Read สำหรับขนาดบัฟเฟอร์ที่ตั้งไว้และวนซ้ำในขณะที่วนซ้ำWHILSTภายในโปรแกรมทำงานเบื้องหลังดังนั้นจึงไม่บล็อกเธรด UI หลัก …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.