-1

何らかの形式のテキスト ファイルを読み込んでいます。最初の 2 行をスキップして、 firstname 、 second name を読み取り、 firstname 、 secondname のリストを作成しています。すべてが動作しているファイルですが、最後の行が空の場合、プログラムは動作を停止し、エラーが発生します。私のプログラムが私のコードを止めないように空白を避ける方法は次のとおりです。

public void Read(string filename, List<Person> person)
{
   using (StreamReader sr = new StreamReader(filename))
   {
       sr.ReadLine();
       sr.ReadLine();
       while (!sr.EndOfStream)
       {
           FirstName= sr.EndOfStream ? string.Empty : sr.ReadLine();
           LastName= sr.EndOfStream ? string.Empty : sr.ReadLine();
           person.Add(new Person(FirstName, LastName));
       }
   }
}

ファイル形式は

Students Data
Description
FirstName
LastName
FirstName
LastName
FirstName
LastName
FirstName
LastName
4

2 に答える 2

1

次のような StreamReader クラスのアダプターを作成できます。

public class NoBlankStreamReader : StreamReader
{
    public NoBlankStreamReader(FileStream fs) : base(fs) { }


    private bool IsBlank(string inString)
    {
        if (!string.IsNullOrEmpty(inString)) inString = inString.Trim();
        return string.IsNullOrEmpty(inString);
    }


    public override string ReadLine()
    {
        string result= base.ReadLine();
        while (result!=null && IsBlank(result))
            result = base.ReadLine();
        return result;
    }
}

次に、次のように使用します。

using (FileStream fs=File.OpenRead(@"test.txt"))
using (TextReader reader = new NoBlankStreamReader(fs))
{
    while (reader.Peek() > -1)
        Console.WriteLine(reader.ReadLine());
}

またはあなたは投稿を見ることができます:

C#を使用してテキストファイルを読み取るときに空行を削除する方法

于 2013-09-06T08:53:01.057 に答える