0

私はしばらくこの問題に取り組んできましたが、少し行き詰まっています。ループしてすべての行を読み取り、すべての部分文字列を合計して 1 つの最終的な数値にする必要があるテキスト ファイルがあります。問題は、私が持っているのは、正しく読み取って、ファイルの最初の行の番号のみを生成することです。「while」と「for each」のどちらを使用すればよいかわかりません。ここに私が持っているコードがあります:

    string filePath = ConfigurationSettings.AppSettings["benefitsFile"];
    StreamReader reader = null;
    FileStream fs = null;
    try
    {
        //Read file and get estimated return.
        fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        reader = new StreamReader(fs);
        string line = reader.ReadLine();
        int soldToDate = Convert.ToInt32(Convert.ToDouble(line.Substring(10, 15)));
        int currentReturn = Convert.ToInt32(soldToDate * .225);

        //Update the return amount
        updateCurrentReturn(currentReturn);

どんな提案でも大歓迎です。

4

3 に答える 3

4

そのために while ループを使用し、各行を読み取り、null が返されていないことを確認します。

    string filePath = ConfigurationSettings.AppSettings["benefitsFile"];
    StreamReader reader = null;
    FileStream fs = null;
    try
    {
        //Read file and get estimated return.
        fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        reader = new StreamReader(fs);

        string line;
        int currentReturn = 0;
        while ((line = reader.ReadLine()) != null){
            int soldToDate = Convert.ToInt32(Convert.ToDouble(line.Substring(10, 15)));
            currentReturn += Convert.ToInt32(soldToDate * .225);
        }

        //Update the return amount
        updateCurrentReturn(currentReturn);

    }
    catch (IOException e){
     // handle exception and/or rethrow
    }
于 2013-08-19T17:24:41.620 に答える
1

これは、ほとんどのテキストで機能するため、より普遍的です。

string text = File.ReadAllText("file directory");
foreach(string line in text.Split('\n'))
{

}
于 2013-08-19T18:40:04.613 に答える
1

使用する方が簡単ですFile.ReadLines

foreach(var line in File.ReadLines(filepath))
{
    //do stuff with line
}
于 2013-08-19T17:32:26.180 に答える