2016-03-21 6 views
-3

私はこのコードを持っており、改善したいと思います。私は到達できないコード

string NameOfFile = tbOpenFile.Text; 
FileStream ReadStream = new FileStream(NameOfFile, FileMode.Open, FileAccess.ReadWrite); 

StreamReader r_Read = new StreamReader(ReadStream); 
i = 1; 

lb1.Items.Clear(); 

for (; ; i++) 
{ 
    tbOpenFile.Text = r_Read.ReadLine(); 
    lines[i] = tbOpenFile.Text; 

    lb1.Items.Add(lines[i]); 

    if (r_Read.EndOfStream.Equals(true)) 
    { 
     textBox2.Text = r_Read.EndOfStream.ToString(); 
     ReadStream.Close(); 
    } 
} 

場合は使用して、次のように実行しようとしましたなど

string NameOfFile = tbOpenFile.Text; 
FileStream ReadStream = new FileStream(NameOfFile, FileMode.Open, FileAccess.ReadWrite); 

StreamReader r_Read = new StreamReader(ReadStream); 
i = 1; 

lb1.Items.Clear(); 

while(r_Read.EndOfStream.Equals(true)) 
{ 
    for (; ; i++) 
    { 
     tbOpenFile.Text = r_Read.ReadLine(); 
     lines[i] = tbOpenFile.Text; 

     lb1.Items.Add(lines[i]); 
    } 

    continue; 

    textBox2.Text = r_Read.EndOfStream.ToString(); 
    ReadStream.Close(); 
} 

ながら使用して、このようにしてみてくださいしかし、私は常にエラーを取得してきた後藤に

string NameOfFile = tbOpenFile.Text; 

FileStream ReadStream = new FileStream(NameOfFile, FileMode.Open, FileAccess.ReadWrite); 

StreamReader r_Read = new StreamReader(ReadStream); 
i = 1; 
lb1.Items.Clear(); 

for (; ; i++) 
{ 
    tbOpenFile.Text = r_Read.ReadLine(); 
    lines[i] = tbOpenFile.Text; 

    lb1.Items.Add(lines[i]); 

    if (r_Read.EndOfStream.Equals(true)) 
     goto next; 
} 

next: 
{ 
    textBox2.Text = r_Read.EndOfStream.ToString(); 
    ReadStream.Close(); 
} 

を削除したいです

到達不能コード

+6

:あなたは whileループを使用して非常に簡単にすべてを達成することができます。 – user1666620

+0

if(r_Read.EndOfStream.Equals(true))break; – Gusman

+0

後藤さんは**非常に悪い練習です**。なぜこれが最初のコメントではないのだろうか。 – bytecode77

答えて

1

問題がありますfor (; ; i++) これは永久に増分され、forループの条件を入れます。

0

continue;の後のコードは実行されません。到達できないコードです。代わりにbreakループがファイルの終わりに達したら。

以下を試してください。私はループが不要なので、whileループを削除しました。

StreamReader r_Read = new StreamReader(ReadStream); 
i = 1; 

lb1.Items.Clear(); 

for (; ; i++) 
{ 
    tbOpenFile.Text = r_Read.ReadLine(); 
    lines[i] = tbOpenFile.Text; 

    lb1.Items.Add(lines[i]); 
    if (r_Read.EndOfStream.Equals(true)) 
    { 
     break; // exits the loop. 
    } 
} 

textBox2.Text = r_Read.EndOfStream.ToString(); 
ReadStream.Close(); 
0

ループから脱出する必要があります。

for (; ; i++) 
{ 
    tbOpenFile.Text = r_Read.ReadLine(); 
    lines[i] = tbOpenFile.Text; 

    lb1.Items.Add(lines[i]); 

    if (r_Read.EndOfStream.Equals(true)) 
    { 
     textBox2.Text = r_Read.EndOfStream.ToString(); 
     ReadStream.Close(); 
     break; 
    } 
} 
1

ファイルを処理する方法はあまり一般的ではありません。 - それはあなたの到達不能コードである `実行されません;`続けた後、コード

using (StreamReader streamReader = File.OpenText(path)) 
{ 
    while (!streamReader.EndOfStream) 
    { 
     string line = streamReader.ReadLine(); 
     // Process "line" here... 
    } 
} 
関連する問題