0

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 を使用して情報を見つけました。それを試しましたが、どちらも機能しません。

4

1 に答える 1

0

常にオブジェクトを閉じる必要がありFileStreamます。ステートメントを使用してみてください

using(FileStream file = File.Open(downloadFilePath, FileMode.Create))
{
    //code
}
于 2013-09-10T23:19:38.000 に答える