का उपयोग कर एक पाठ फ़ाइल में एक विशिष्ट लाइन अधिलेखित करें मैं निम्नलिखित कार्य करने होंगे ये पथ निश्चित रूप से अलग-अलग लंबाई होंगे, इसलिए मुझे उद्धरणों में जो कुछ भी है उसे बदलने या पूरी तरह से लाइन को मिटाने और एक नया प्रवेश करने की आवश्यकता है, लेकिन उसी स्थान पर, दस्तावेज़ के अंत में शामिल नहीं किया गया है।VB.NET
VB.NET
उत्तर
, एक स्ट्रिंग में पाठ फ़ाइल पढ़ें प्रत्येक पंक्ति के ऊपर पुनरावृति और देखें कि क्या यह प्रारूप में है:
[Path] = "...."
(नियमित अभिव्यक्ति के साथ या बस string.StartsWith("[Path] = ")
के साथ)
इस पाश तुम बाहर लेखन किया जाना चाहिए में अन्य सभी लाइनें और जब आप इस [पथ] रेखा पर हों, तो संशोधित एक को मुद्रित करें।
कोड मेंतो (क्षमा करें, यह सी # में है):
var reader = File.OpenText("foo.txt");
var writer = new StreamWriter("output.txt");
string line;
while ((line=reader.ReadLine()) != null)
{
if (line.StartsWith("[Path]"))
writer.WriteLine("[Path] = \"c:\\that\\other\\newer\\path\\\"");
else
writer.WriteLine(line);
}
निश्चित रूप से
, बंद और StreamReader और StreamWriter निपटाने।
यहां सौदा है: डिस्क पर फ़ाइलों को संग्रहीत करने के तरीके के कारण, आप को इसके बाद की प्रत्येक पंक्ति को अपडेट किए बिना एक पंक्ति में नहीं लिख सकते हैं।
ऐसा करने के कई तरीके हैं, और आपकी स्थिति के लिए सबसे उपयुक्त यह फ़ाइल के आकार की तरह चीजों पर निर्भर करेगा, क्या आप इसे कई फाइलों पर कर रहे हैं, जहां आप उम्मीद करते हैं कि फ़ाइल में इसे खोजने के लिए, आदि
लेकिन अधिकांश समय मैं जो करना चाहता हूं वह वास्तव में पुरानी फ़ाइल की प्रतिलिपि बनाता है ... इसलिए जब मैं फ़ाइल को ढूंढने की ज़रूरत है तो मुझे बदलने की जरूरत है , मैं यह भी लिख रहा हूं कि मैंने एक नए स्थान पर क्या पढ़ा है। जब मुझे रेखा मिलती है, तो मैं नई जानकारी लिखता हूं। मैं तब तक फ़ाइल के माध्यम से खोजता रहता हूं जब तक कि मैं अंत तक नहीं पहुंच जाता, उस समय मैं दोनों धाराओं को बंद करता हूं, मूल को हटाता हूं, और नया नाम बदलता हूं।
Dim ss() As String
ss = File.ReadAllLines([path])
ss(47) = "c:\that\other\newer\path\"
File.WriteAllLines([path], ss)
आप नहीं जानते कि जो लाइन बदलने के लिए, आप इसके लिए सरणी एस एस के माध्यम से खोज सकते हैं:
एक त्वरित तरीका readAllLines और WriteAllLines उपयोग करने के लिए है।
यदि आप वास्तव में वास्तव में जानते हैं कि आप जिस लाइन को प्रतिस्थापित करना चाहते हैं, वह दिखता है और जो फ़ाइल आप पढ़ रहे हैं वह वास्तव में बड़ी नहीं है, तो आप पुराने स्थान की बजाय नई लाइन जोड़ने के लिए केवल Replace() का उपयोग करने का प्रयास कर सकते हैं:
Dim reader As New StreamReader("foo.txt")
Dim writer As New StreamWriter("output.txt")
Dim s = reader.ReadToEnd().Replace("[Path]: C:\oldPath\file.txt", "[Path]: C:\newPath")
writer.Write(s)
यह चाल
Dim thefile As String = "filepath"
Dim lines() As String = System.IO.File.ReadAllLines("filepath")
lines(number of line you want to replace) = "write what you want to replace here"
System.IO.File.WriteAllLines(filepath, lines)
क्या यह 'StreamReader' पर बेहतर है, इसके अलावा कम कोड लेता है। मैं इस विधि को अधिक संसाधनों का उपयोग करने की अपेक्षा करूंगा? – MrCalvin
सबसे पहले क्या करेंगे एक समारोह का निर्माण लाइन 'एन' का मूल्य देने के लिए:
Public Function daValorConfig(ByVal numValor As Long, ByVal nomeFicheiroINI As String) As String
Dim reader As StreamReader = New StreamReader(Application.StartupPath & "\" & nomeFicheiroINI & ".ini")
Dim valor As String = ""
daValorConfig = ""
Dim i As Long = 1
Try
While i <= numValor
valor = reader.ReadLine()
i = i + 1
End While
daValorConfig = valor
reader.Close()
Catch ex As Exception
reader.Close()
MessageBox.Show(ex.Message, "Error: ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Err.Clear()
End Try
End Function
फिर एक प्रक्रिया है कि निर्दिष्ट लाइन पर नया मान लिखते निर्माण या पुराने एक रख यदि पंक्ति एक आपके द्वारा निर्दिष्ट नहीं है:
Public Sub guardaValorConfig(ByVal dados As String, ByVal numValor As Long, ByVal nomeFicheiroINI As String)
Dim writer As StreamWriter = New StreamWriter(Application.StartupPath & "\" & nomeFicheiroINI & ".ini")
Dim valor As String = ""
Dim i As Long = 1
Try
While i <= numValor
If i = numValor Then
writer.Write(dados)
Else
writer.Write(daValorConfig(i, nomeFicheiroINI))
End If
i = i + 1
End While
writer.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error: ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Err.Clear()
End Try
End Sub
- 1. vb.net
- 2. VB.NET
- 3. VB.NET
- 4. VB.NET
- 5. VB.net
- 6. VB.NET
- 7. vb.net
- 8. VB.NET
- 9. VB.NET
- 10. VB.NET
- 11. VB.NET
- 12. VB.NET
- 13. vb.net
- 14. vb.net
- 15. VB.NET
- 16. vb.net
- 17. VB.Net
- 18. VB.NET
- 19. VB.net
- 20. VB.NET
- 21. VB.NET
- 22. VB.Net
- 23. VB.NET
- 24. vb.net
- 25. VB.NET
- 26. VB.net
- 27. vb.net
- 28. vb.net
- 29. VB.NET
- 30. VB.NET
मैं सिर्फ एक ही पाठ फ़ाइल में उत्पादन के लिए StreamWriter उपयोग कर सकते हैं, या क्या आप नई फाइल में हर पंक्ति को दोबारा लिखने के लिए कह रहे हैं तो इसे वापस पुराने नाम दें? – Niphoet
एक ही फ़ाइल में लिखने की कोशिश न करें। यह उस तरह से अधिक सुरक्षित है! आप एक नई फाइल बनाकर और पुराने को ओवरराइट करके लगभग कुछ भी नहीं खो देते हैं। – alex
आप File.Copy ("output.txt", "foo.txt", true) जोड़ सकते हैं; File.Delete ("output.txt"); तो ऐसा लगता है कि मूल फ़ाइल ओवरराइट की गई थी। – Axarydax