2012-04-30 12 views
5

में आइटम्स को ऊपर/नीचे कैसे स्थानांतरित कर सकता हूं मैं आइटम/मूल्यों को टेक्स्ट फ़ाइल को ऊपर और नीचे कैसे स्थानांतरित करूं? फिलहाल मेरा प्रोग्राम एक टेक्स्ट फ़ाइल पढ़ता है, यह सुनिश्चित करने के लिए थोड़ी देर का उपयोग करता है कि इसे पढ़ने के लिए और कोई लाइन नहीं होने पर यह रुक जाए। मैंने यह जांचने के लिए एक कथन का उपयोग किया कि क्या काउंटर उस मूल्य की रेखा के बराबर है जो मैं स्थानांतरित करना चाहता हूं। मुझे यकीन नहीं है कि यहां से कैसे जारी रहना है।मैं टेक्स्ट फ़ाइल

_upORDown = 1; 

    using (StreamReader reader = new StreamReader("textfile.txt")) 
    { 
     string line = reader.ReadLine(); 
     int Counter = 1; 
     while (line != null) 
     { 

      if (Counter == _upORDown) 
      { 
       //Remove item/replace position 

      } 
      Counter++; 
     } 
    } 
+0

आप मूल्यों की जगह फ़ाइल को पढ़ने और फिर इसे वापस लिखने पुराने संस्करण को अधिलेखित कर सकते हैं। – Zaki

+0

काउंटर == _upordown जब आप क्या करना चाहिए? क्या आप फाइल लिख रहे हैं? – Robaticus

+0

आप 'जबकि (! Reader.EndOfStream)' के बजाय 'लाइन (= null)' कर सकते हैं इसके अलावा आपको अपने लूप के अंदर 'line = reader.ReadLine()' होना चाहिए या आप बस एक में फंस जाएंगे अनंत लूप। – DangerMonkey

उत्तर

3

आप स्मृति में फ़ाइल को पढ़ सकते हैं, उस स्थान को ले जाएं जहां आपको इसकी आवश्यकता है, और फ़ाइल को वापस लिखें। आप ReadAllLines और WriteAllLines का उपयोग कर सकते हैं। ,

if (i == 0) return; // Cannot move up line 0 
string path = "c:\\temp\\myfile.txt"; 
// get the lines 
string[] lines = File.ReadAllLines(path); 
if (lines.Length <= i) return; // You need at least i lines 
// Move the line i up by one 
string tmp = lines[i]; 
lines[i] = lines[i-1]; 
lines[i-1] = tmp; 
// Write the file back 
File.WriteAllLines(path, lines); 
+0

मैं लाइनों क्या है? – user1285872

+0

@ user1285872 'i' शून्य-आधारित लाइन नंबर पर एक पूर्णांक परिवर्तनीय सेट है जिसे आप एक से ऊपर ले जाना चाहते हैं। – dasblinkenlight

+0

ओकी धन्यवाद, त्रुटि प्राप्त करने में "त्रुटि 'System.Array' में 'लंबाई' की परिभाषा नहीं है और 'System.Array' प्रकार के पहले तर्क को स्वीकार करने वाली कोई विस्तार विधि 'लंबाई' नहीं मिल सकती है (हैं आप एक प्रयोग निर्देश या असेंबली संदर्भ गायब हैं?) " यदि (लाइनें। लम्बाई <= रेखा) वापसी; – user1285872

0

@ dasblinkenlight के जवाब LINQ का उपयोग कर:

इस कोड को स्थिति i अप में स्ट्रिंग ले जाता है एक लाइन द्वारा

string path = "c:\\temp\\myfile.txt"; 
var lines = File.ReadAllLines(path); 
File.WriteAllLines(
    path, 
    lines.Take(i).Concat(
     lines.Skip(i+1) 
    ) 
); 

इस स्थिति i पर लाइन को हटा देता है (शून्य आधारित) और दूसरी लाइनों को ऊपर ले जाता है।

एक नई लाइन को जोड़ा जा रहा है:

string path = "c:\\temp\\myfile.txt"; 
var lines = File.ReadAllLines(path); 
var newline = "New line here"; 
File.WriteAllLines(
    path, 
    lines.Take(i).Concat(
     new [] {newline} 
    ).Concat(
     lines.Skip(i+1) 
    ) 
); 
संबंधित मुद्दे