Как я могу начать чтение и запись данных с определенной строки до конца файла в консольном приложении(.NET framework) через C#?
Привет. Я новичок.
Во-первых, я хотел бы начать чтение с этой строки следующим образом до конца файла:
1 START OF RMS MAP
Кроме того, я хотел бы написать конкретную строку в текстовый файл.
Я не преуспел в первом шаге.
Родительский каталог: ftp://cddis.gsfc.nasa.gov/gnss/products/ionex/2017/
Все файлы начинаются с codg.
У меня есть 365 файлов, начинающихся с codg.
Что я уже пробовал:
Регулярное выражение для этой строки: (s, @"^\s*1\s+начало среднеквадратичной карты\S*$")
using System; using System.IO; namespace ReadFromFile { class Program { private void ReadIt(StreamReader sr, StreamWriter sw) { string line = sr.ReadLine(); int blank, lat; String select = ""; while (line != null) { blank = line.Split(' ').Length; if (line.Length == 80) { if (line.Substring(69, 3) == "RMS") if (line.Substring(60, 20) == "EPOCH OF CURRENT MAP") select = line.Substring(0, 24); } if (blank > 6) { try { if (line.Split(' ')[blank - 1] == "LAT/LON1/LON2/DLON/H") { lat = Convert.ToInt32(line.Split(' ')[4].Substring(0, 2)); if ((lat == 30)) { line = sr.ReadLine(); line = sr.ReadLine(); sw.WriteLine(select + " " + line.Substring(56, line.Length - 57)); } } line = sr.ReadLine(); } catch { line = sr.ReadLine(); } } } } static void Main(string[] args) { string[] dir = Directory.GetFiles(@"C:\Users\Suat\Desktop\ionex\2017"); int i = 0; Program P = new Program(); StreamWriter sw = File.CreateText("C:/Users/Suat/Desktop/result.txt"); for (i = 0; i < dir.Length; i++) { Console.Clear(); Console.WriteLine(i.ToString() + "/" + dir.Length.ToString()); StreamReader sr = File.OpenText(dir[i]); P.ReadIt(sr, sw); sr.Close(); } sw.Close(); } } }
Alexander Dymshyts
Пожалуйста, добавьте какой-нибудь код, который вы уже пробовали
[no name]
Этот код не только получает данные между "НАЧАЛО КАРТЫ RMS" и "КОНЕЦ КАРТЫ RMS", этот код также получает "ПУСК ТЭЦ КАРТЕ" и "КОНЕЦ КАРТЫ TECМне просто нужно записать данные среди "НАЧАЛО КАРТЫ RMS" и "КОНЕЦ КАРТЫ RMS- в текстовый файл.
using System; using System.IO; namespace ReadFromFile { class Program { private void ReadIt(StreamReader sr, StreamWriter sw) { string line = sr.ReadLine(); int blank, lat; String select = ""; while (line != null) { blank = line.Split(' ').Length; if (line.Length == 80) { if (line.Substring(69, 3) == "RMS") if (line.Substring(60, 20) == "EPOCH OF CURRENT MAP") select = line.Substring(0, 24); } if (blank > 6) { try { if (line.Split(' ')[blank - 1] == "LAT/LON1/LON2/DLON/H") { lat = Convert.ToInt32(line.Split(' ')[4].Substring(0, 2)); if ((lat == 30)) { line = sr.ReadLine(); line = sr.ReadLine(); sw.WriteLine(select + " " + line.Substring(56, line.Length - 57)); } } line = sr.ReadLine(); } catch { line = sr.ReadLine(); } } } } static void Main(string[] args) { string[] dir = Directory.GetFiles(@"C:\Users\Suat\Desktop\ionex\2017"); int i = 0; Program P = new Program(); StreamWriter sw = File.CreateText("C:/Users/Suat/Desktop/result.txt"); for (i = 0; i < dir.Length; i++) { Console.Clear(); Console.WriteLine(i.ToString() + "/" + dir.Length.ToString()); StreamReader sr = File.OpenText(dir[i]); P.ReadIt(sr, sw); sr.Close(); } sw.Close(); } } }