我想使用StreamReader和StreamWriter打開一個文本文件(固定寬度)並修改一些特定的數據列。我有以下格式的日期將被轉換爲打包的COMP-3字段。使用StreamReader和StreamWriter來修改文件
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:
[email protected]#$%0718F
020100716F
020100717F
020100718F
020100719F
[email protected]#$% = Ascii Characters SO can't display
任何想法?謝謝!
UPDATE 上盒裝字段COMP-3
盒裝字段中的信息被用於由COBOL系統,以減少一個字段要求在文件的字節數。請參閱以下SO帖子瞭解更多信息:Here
以下是COMP-3包裝的以下日期「20120123」的圖片。這是我的最終結果,因爲我不確定這是否會影響可能的答案。
我的問題是你如何獲得的StreamWriter動態替換數據的文件中並更改行的長度?
我似乎無法找到您的實際問題。如果你解釋打包的COMP-3數據字段是什麼,它可能會有所幫助。如果您告訴我們預期的結果,可能也會有所幫助。 – 2012-01-30 18:12:40
請不要用「C#」等來標題。這就是標籤的用途。 – 2012-01-30 18:15:26
經過BCD編碼後,您將獲得**二進制**數據。不要使用StreamWriter將其寫入文件,而是使用FileStream。 – 2012-01-30 21:54:58