0

2つの異なるC#配列に入れたい巨大なテキストファイル(33 mb、FSOを「TristateTrue」としてUnicodeとしてエンコード)があります。

テキストファイルの行は次のように形成されます。

 40 TAB 10 TAB 15 TAB 7 TAB 8
 65 TAB 2  TAB 9  TAB 3 TAB 6
 30 TAB 89 TAB 11 TAB 5 TAB 14

次に、最初のC#配列はこれを読み取る必要があります。

 int[] outputs=new int[iLineCount+1];    
 outputs[0] = 40;
 outputs[1] = 65;
 outputs[2] = 30;

他のC #配列は次のようになります。

 int[][] inputs = new int[3][];
 inputs[0] = new int[5];
 inputs[1] = new int[5];
 inputs[2] = new int[5];

 inputs[0][0] = 10;
 inputs[0][1] = 15;
 inputs[0][2] = 7;
 inputs[0][3] = 8;

 inputs[1][0] = 2;
 inputs[1][1] = 9;
 inputs[1][2] = 3;
 inputs[1][3] = 6;

 inputs[2][0] = 89;
 inputs[2][1] = 11;
 inputs[2][2] = 5;
 inputs[2][3] = 14;

これは本当に難しいと思います。誰か助けていただければ幸いです。

どうもありがとうございます!

:TABはタビュレーター文字を表し、行は改行文字で「区切られ」ます

4

2 に答える 2

2

メソッドFile.ReadAllLinesとを見てくださいString.Split
一緒に、彼らはあなたにかなり良い出発点を与えるはずです。

于 2013-02-14T07:24:28.280 に答える
2

あなたを動かすためだけに:

        using (FileStream fileStream = new FileStream("filename", FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            using (StreamReader streamReader = new StreamReader(fileStream))
            {
                while (streamReader.Peek() > -1)
                {
                    string line = streamReader.ReadLine();
                    string[] parts = line.Split('\t');

                    outputs[lineCounter] = int.Parse(parts[0]);

                    inputs[lineCounter] = new int[4];
                    inputs[lineCounter][0] = int.Parse(parts[1]);
                    inputs[lineCounter][1] = int.Parse(parts[2]);
                    inputs[lineCounter][2] = int.Parse(parts[3]);
                    inputs[lineCounter][3] = int.Parse(parts[4]);

                    lineCounter++;
                }
            }
        }

このコードは例外をキャッチしたり、有効なデータをチェックしたりしないことに注意してください。それはあなたにお任せします。

于 2013-02-14T07:32:50.490 に答える