1

固定長ファイルをC#オブジェクトに変換したい。たとえば、私は次のような固定長のファイルを持っています

Input File
------------

SAM      DENVER      20
temp     texas       33

これは、名前、場所、年齢、長さ10の名前、長さ10の場所2の長さの年齢を表します。

ここで、入力ファイル内の位置のxmlを構成しています

構成XML

<Mapping>
<Name StartPosition ="1" Length ="10"></Name>
<Place StartPosition ="11" Length ="10"></Place>
<Age StartPosition ="21" Length ="2"></Age>
</Mapping>

私は次のようなクラスを持っています

クラスオブジェクト

public class InputFileConvertor
{
    public string Name{get;set;}
    public string Place{get;set;}
    public string Age{get;set;}

}

ここで私の質問は、n個のレコードを持つこの入力固定長ファイルをInputFileConvertorの文字列配列に変換する方法です。これは、XMLファイルで事前構成されたすべてのパラメーターを受け取る必要があります。

注:この機能を、より少ないメモリ消費量で最大限に実現したいと考えています。

4

1 に答える 1

0

まず、xml ファイルからパラメータをロードし、次のような変数に格納する必要があります。

int nameStart;
int nameLenght;
int placeStart;
int placeLenght;
.....

ファイルを読んだ後:

List<InputFileConvertor> inputList = new ......
string[] lines =System.IO.File.ReadAllLines(@"C:\Data.txt");

foreach(String line in lines)
{
   InputFileConvertor lineInput = new InputFileConvertor();
   lineInput.Name = line.Substring(nameStart,nameLenght);
   //maybe remove the white spaces with String.Trim() or Regex.Replace(text,@"s","");
   //fill also the other properties

   inputList.Add(lineInput);
}
于 2013-03-06T23:41:23.863 に答える