2010-11-19 18 views
12

मेरे पास जो प्रश्न है वह पाठ फ़ाइल से लाइनों को पढ़ने के बजाय इसे पढ़ने के बजाय सरणी में पढ़ने की प्रक्रिया को परिवर्तित करने के संबंध में है।सी # फ़ाइल को कैसे परिवर्तित करें। रीडलाइन में स्ट्रिंग सरणी?

त्रुटि मेरी कोड में कर सकते हैं के साथ string[] lines = File.ReadLines("c:\\file.txt"); पर प्रकट नहीं implicity परिवर्तित ....

किसी एक सरणी प्रारूप में परिणामों को बचाने के लिए कोड पर कृपया सलाह कर सकते हैं? मैंने ReadAllLines कोड रखा है जो परिणाम को सरणी में भी सहेजने में सक्षम है। धन्यवाद!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.IO; 

namespace Testing 
{ 
class Analysis 
{ 
    static void Main() 
    { 
     string[] lines = File.ReadLines("c:\\file.txt"); 

     foreach (string r in lines) 
     { 
      Console.WriteLine("-- {0}", r); 
     } 

     // Keep the console window open in debug mode. 
     Console.WriteLine("Press any key to exit."); 
     System.Console.ReadKey(); 
    } 
} 
} 

ReadAllLines कोड:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.IO; 

namespace Testing 
{ 
class ReadFromFile 
{ 
    static void Main() 
    { 
     string[] lines = System.IO.File.ReadAllLines 
     (@"C:\Users\Public\TestFolder\WriteLines2.txt"); 

     System.Console.WriteLine("Contents of writeLines2.txt =:"); 
     foreach (string line in lines) 
     { 
      Console.WriteLine("\t" + line); 
     } 

     // Keep the console window open in debug mode. 
     Console.WriteLine("Press any key to exit."); 
     System.Console.ReadKey(); 
    } 
} 
} 
+4

ऐसा लगता है कि 'ReadAllLines' पहले से ही आप जो चाहते हैं वह करता है, तो आप इसके लिए' रीडलाइन 'का उपयोग क्यों कर रहे हैं? – Gabe

+0

नीचे दी गई टिप्पणियों को देखें। धन्यवाद। – JavaNoob

उत्तर

26

File.ReadLines() प्रकार का ऑब्जेक्ट System.Collections.Generic.IEnumerable<String>
File.ReadAllLines() तार की एक सरणी रिटर्न देता है।

यदि आप तारों की एक सरणी का उपयोग करना चाहते हैं तो आपको सही फ़ंक्शन को कॉल करने की आवश्यकता है।

आप जिम समाधान का उपयोग कर सकते हैं, बस ReadAllLines() का उपयोग करें या आप अपना रिटर्न प्रकार बदल सकते हैं।

यह भी होगा काम:

System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("c:\\file.txt"); 

आप किसी भी सामान्य संग्रह जो IEnumerable लागू करता है का उपयोग कर सकते हैं। एक उदाहरण के लिए IList।

+0

रिटर्नलाइन एक परिभाषा नहीं है। यही वह सिस्टम है जो दिखा रहा है। – JavaNoob

+0

आह मैं अब अपना टाइपो देखता हूं। मैंने जवाब अपडेट किया है यह रीडलाइन होना चाहिए। बिंदु यह है कि यदि आपको एक सरणी उपयोग ReadAllLines() की आवश्यकता है। यदि आप संग्रह फ़ाइलों का उपयोग कर सकते हैं रीडलाइन() बड़ी फ़ाइलों पर बेहतर काम करता है क्योंकि व्यक्तिगत लाइनों को केवल तभी खींचा जाता है जब आवश्यक हो। –

+1

यूप इस तरह के विचार को रीडलाइन में एक बड़ी फ़ाइल का उपयोग करने की अनुमति देने के लिए है। तो उपर्युक्त कोड ReadAllLines के समान नहीं है? – JavaNoob

16
string[] lines = File.ReadLines("c:\\file.txt").ToArray(); 

हालांकि एक चमत्कार क्यों आप क्या करना चाहते हैं कि जब ReadAllLines काम करता है ठीक।

या शायद आप File.ReadLines की वापसी मान के साथ की गणना करना चाहते हैं:

var lines = File.ReadAllLines("c:\\file.txt"); 
foreach (var line in lines) 
{ 
    Console.WriteLine("\t" + line); 
} 
+0

ReadAllLines के बजाय रीडलाइन का उपयोग करने का कारण फ़ाइल आकार के कारण है। यह बड़ी टेक्स्ट फ़ाइलों के लिए सलाह दी जाती है क्योंकि यह एक बफर को बहने का कारण बन सकती है। – JavaNoob

+4

लेकिन 'ToArray' को कॉल करना' रीडलाइन 'को कॉल करने के किसी भी लाभ को अस्वीकार कर देगा। जैसा कि मैंने दिखाया है गणनाकर्ता का प्रयोग करें। –

+0

क्या गणक रीडलाइन के कार्यों का उपयोग करता है? – JavaNoob

1

string[] lines = File.ReadLines("c:\\file.txt");IEnumerable<string> lines = File.ReadLines("c:\\file.txt"); अपने शेष कोड को ठीक काम करना चाहिए।

संबंधित मुद्दे