私は Unity ゲーム エンジンを使用してローカル ファイルを FTP サーバーからのファイルで上書きしようとしている開発者です。そのために System.IO.File.WriteAllBytes 関数を使用しています。
アプリケーションを起動し、更新されたコードをトリガーすると、アプリケーションがフリーズします。
私の Windows フォームでは、コードはここに到着し、WebClient インスタンスを使用してファイルをダウンロードし、ローカル ファイルよりも大きい場合は上書きします。
public void downloadFile (WebClient webClient, string urlAddress,
string location, byte[] localFile)
{
webClient.Proxy = null;
webClient.Credentials = new NetworkCredential("<user>", "<pass>");
byte[] fileData = webClient.DownloadData("ftp://"+ urlAddress);
/*
* Only download if bytes of remote file
* is larger than bytes of local file
*/
if (fileData.Length > localFile.Length)
{
File.WriteAllBytes(location, fileData);
}
}
FileStream を使用すると、アプリケーションも同様にフリーズします。
FileStream _FileStream = new FileStream(location, FileMode.Create, FileAccess.Write);
_FileStream.Write(fileData, 0, fileData.Length);
_FileStream.Close();
また、更新が必要なすべてのファイルを一時フォルダーに書き込んでから、File.Copy を使用してみました。
ファイルを適切に上書きするために何をしていると思いますか?