StreamReader
でファイルを読み取るときに問題が発生し、line != null
をtextBox1
に追加
コード:
using(StreamReader reader = new StreamReader("lastupdate.txt"))
{
string line;
while((line = reader.ReadLine()) != null)
{
textBox1.Text = line;
}
reader.Close();
}
それは機能しておらず、理由はわかりません。 using StreamReader
を使用してみましたが、URLからファイルをダウンロードすると、ファイルがダウンロードされたフォルダーに表示されます。 lastupdate.txt
のサイズは1KBです。
これは、MessageBox
を使用した現在の作業コードです。 MessageBox
を削除すると、コードが機能しなくなります。なんらかの待機が必要か、わかりません。
WebClient client = new WebClient();
client.DownloadFileAsync(new Uri(Settings.Default.patchCheck), "lastupdate.txt"); // ok
if(File.Exists("lastupdate.txt"))
{
MessageBox.Show("Lastupdate.txt exist");
using(StreamReader reader = new StreamReader("lastupdate.txt"))
{
string line;
while((line = reader.ReadLine()) != null)
{
textBox1.Text = line;
MessageBox.Show(line.ToString());
}
reader.Close();
}
File.Delete("lastupdate.txt");
}
試してください:
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader("lastupdate.txt"))
{
while (sr.Peek() >= 0)
{
sb.Append(sr.ReadLine());
}
}
textbox.Text = sb.Tostring();
テキストボックスにテキストが必要な場合は、すべてを読み、テキストボックスに入力する方がはるかに効果的です。
var lines = File.ReadAllLines("lastupdate.txt");
textBox1.Lines = lines; //assuming multi-line text box
または:
textBox1.Text = File.ReadAllText("lastupdate.txt");
編集:
最新の更新後-ファイルをダウンロードしています非同期-ファイルが存在しない可能性があります。一部しか存在しないか、コード実行時の中間の状態です。
ファイル内のテキスト文字列だけをダウンロードしない場合は、代わりにDownloadString
を使用します。
string text = "";
using (WebClient wc = new WebClient())
{
text = wc.DownloadString(new Uri(Settings.Default.patchCheck));
}
textBox1.Text = text;
これを試して :
using(StreamReader reader = new StreamReader(Path))
{
string line = reader.ReadLine();
while(line != null)
{
textBox1.Text += line;
line = reader.ReadLine()
}
reader.Close();
}
Webクライアントには、かなり奇妙なDownloadFileAsyncメソッドがあります。戻り値の型は無効であるため、待機できません。また、これはタスクも取得しないため、ContinueWithは不可能です。それでは、DownloadFileCompletedイベントを使用します。
const string FileName = "lastupdate.txt";
private void DownloadLastUpdate() {
var client = new WebClient();
client.DownloadFileCompleted += ( s, e ) => {
this.UpdateTextBox( e.Error );
client.Dispose();
};
client.DownloadFileAsync( new Uri( Settings.Default.patchCheck ), FileName );
}
オプションの例外パラメーターを使用して、例外メッセージを中継しました。必要に応じて自由にリファクタリングしてください。 File.ReadLinesは行ごとにテキストを生成するため、大きなファイルはあまりメモリを使用しないでください。
private void UpdateTextBox( Exception exception = null ) {
textBox1.Text = string.Empty;
if ( exception != null ) {
textBox1.Text = exception.Message;
return;
}
if ( !File.Exists( FileName ) ) {
textBox1.Text = string.Format( "File '{0}' does not exist.", FileName );
return;
}
var lines = File.ReadLines( FileName );
textBox1.Text = string.Join( Environment.NewLine, lines );
}
上記の答えは正しいですが、コードの一部では、1行を変更するだけです。
textBox1.Text += line;