-4

〜3ミリ行の巨大なファイルがあります。すべての行には、次のようなレコードが含まれています。

1|2|3|4|5|6|7|8|9

'|' のような正確に 8 個の区切り文字 すべての行で。このファイルを読み取り、すべての行から最後の '9' 番号のみを抽出して別のファイルに保存する方法を探しています。

編集:

ここで私はすでにやったことです。

using (StreamReader sr = new StreamReader(filepath))
    using (StreamWriter sw = new StreamWriter(filepath1))
    {
        string line = null;
        while ((line = sr.ReadLine()) != null)
            sw.WriteLine(line.Split('|')[8]);
    }

File.WriteAllLines("filepath", File.ReadAllLines(filepath).Where(l => !string.IsNullOrWhiteSpace(l)));

ファイルを読み取り、最後の数字を抽出してから、新しいファイルに書き込み、空白行をクリアします。最後の桁は 10 ~ 15 個の記号で、最初の 6 個を抽出したいと思います。読み続けていくつか試してみます。完了したとき、または質問があるときは、もう一度編集します。

ありがとう

編集 2: OK、ここで番号から最初の 8 桁を取得します。

 sw.WriteLine(line.Substring(0, Math.Min(line.Length, 8)));

編集 3: ファイルに残っているすべての数字を一致させる方法がわかりません。私はそれらを一致させ、魔女番号がファイルに何回あるかを確認したいと考えています。

何か助けはありますか?

4

8 に答える 8

2

巨大なファイルなので、1 行ずつ読む必要があります。

public IEnumerable ReadFileIterator(String filePath)
        {
            using (StreamReader streamReader = new StreamReader(filePath, Encoding.Default))
            {
                String line;
                while ((line = streamReader.ReadLine()) != null)
                {
                    yield return line;
                }
                yield break;
            }
        }

        public void WriteToFile(String inputFilePath, String outputFilePath)
        {
            using (StreamWriter streamWriter = new StreamWriter(outputFilePath, true, Encoding.Default))
            {
                foreach (String line in ReadFileIterator(inputFilePath))
                {
                    String[] subStrings = line.Split('|');
                    streamWriter.WriteLine(subStrings[8]);
                }
                streamWriter.Flush();
                streamWriter.Close();
            }
        }
于 2013-10-15T09:01:02.187 に答える
1
using (StreamReader sr = new StreamReader("input"))
    using (StreamWriter sw = new StreamWriter("output"))
    {
        string line = null;
        while ((line=sr.ReadLine())!=null)
            sw.WriteLine(line.Split('|')[8]);
    }
于 2013-10-15T08:53:56.637 に答える
1

String.Split()配列内の行を取得し、最後の要素を取得して別のファイルに保存するために使用します。行ごとにこのプロセスを繰り返します。

于 2013-10-15T08:52:01.910 に答える