FTP サーバー上のファイルに関する情報 (ハッシュ コード、ファイル名、およびファイル ディレクトリ) を含む updatelist.xml ファイルをダウンロードするアップデーターに取り組んでいます。
次に、ローカル コンピューター上のこれらのファイルの情報を取得し、(ハッシュ コードに基づいて) 異なる場合、アップデーターは更新されたファイルを ftp サーバーからダウンロードします。
それはうまく機能しますが、txt ファイルに関しては少し問題があります。基本的に、ファイルを書き込んでいるときに、null で終わる文字列は書き込まれません。次に例を示します。
これは FTP サーバー上のファイルです。
"Come Lads! How does things go?
I see my youth in you and it makes
これは、ローカル コンピューターにダウンロードされた後の同じファイルです。
"Come Lads! How does things go?I see my youth in you and it makes
インターネットで情報を検索していますが、これを修正する方法がわかりません。
これはコードの一部であり、重要な部分だと思います。
FileStream file;
file = File.Open(downloadFilePath, FileMode.Create);
byte[] buffer = new byte[1024 * 30];
int read;
long downloaded = 0;
while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
downloaded += read;
string text = string.Format("Descargando archivo {0} de {1}: {2} - {3} / {4}", curFiles, totalFiles,
xn["Name"].InnerText, BytesToString(downloaded), BytesToString(contentLength));
label_progreso.Text = text;
progressBar2.Value = (int)ProgressBarValue(downloaded, contentLength);
file.Write(buffer, 0, read);
}
明らかに問題は、プログラムがファイルを作成して書き込むときに、null で終了する文字列を書き込まないことです。
私は何が欠けていますか?
FtpWebRequest の代わりに webclient.download を使用して情報を見つけました。それを試しましたが、どちらも機能しません。