Я пытаюсь использовать StreamReader и StreamWriter, чтобы открыть текстовый файл (фиксированная ширина) и изменить несколько определенных столбцов данных.У меня есть даты в следующем формате, которые будут преобразованы в упакованные поля COMP-3.
020100718F
020100716F
020100717F
020100718F
020100719F
Я хочу иметь возможность читать в датах форму файла с помощью StreamReader, затем преобразовывать их в упакованные поля (5 символов) и затем выводить их с помощью StreamWriter.Однако я не нашел способа использовать StreamWriter вправо на определенную позицию, и начинаю задумываться, возможно ли это.
У меня есть следующий фрагмент кода.
System.IO.StreamWriter writer;
this.fileName = @"C:\Test9.txt";
reader = new System.IO.StreamReader(System.IO.File.OpenRead(this.fileName));
currentLine = reader.ReadLine();
currentLine = currentLine.Substring(30, 10); //Substring Containing the Date
reader.Close();
...
// Convert currentLine to Packed Field
...
writer = new System.IO.StreamWriter(System.IO.File.Open(this.fileName, System.IO.FileMode.Open));
writer.Write(currentLine);
В настоящее время то, что у меня есть, делает следующее:
After:
!@#$%0718F
020100716F
020100717F
020100718F
020100719F
!@#$% = Ascii Characters SO can't display
Есть идеи?Спасибо!
ОБНОВЛЕНИЕ Информация о упакованных полях COMP-3
Упакованные поля используются системами COBOL для уменьшения количества байтов, которое требуется полю в файлах.Пожалуйста, см. Следующий пост SO для получения дополнительной информации: Здесь
Вот изображение следующей даты "20120123", упакованной в COMP-3.Это мой конечный результат, и я включил его, потому что я не был уверен, повлияет ли он на возможные ответы.
У меня вопрос: как заставить StreamWriter динамически заменять данные внутри?файл и изменить длину строк?