我是一名使用 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
我应该怎么做才能正确覆盖文件?