2

我是一名使用 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

我应该怎么做才能正确覆盖文件?

4

0 回答 0