本雍 2023-03-22 08:43 采纳率: 66.7%
浏览 39
已结题

尝试下载局域网上的文件,文件夹和文件都有,但是文件是空文件,请问是什么原因?

尝试下载局域网上的文件,循环下载,文件夹和文件都有了,但是文件都是4KB内容相同,而且Log显示文件长度都是一样的。我尝试用这个方法下载本地的文件,就能很顺利的下载下来。有人知道是什么原因么?

 /// <summary>
        /// 下载文件夹下的所有文件,安装到指定的路径下
        /// </summary>
        /// <param name="downloadPath">下载地址</param>
        /// <param name="savePath">保存地址</param>
        /// <param name="LoadProgress">加载进度条</param>
        /// <param name="DownLoad">加载完成事件</param>
        /// <returns></returns>
        public IEnumerator DownLoadAllAssetByWeb(string downloadPath, string savePath, Action<int, int> LoadProgress, Action DownLoad = null)
        {
            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }

            //修改文件路径名称
            downloadPath = UrlAdjustment(downloadPath);

            Debug.Log(downloadPath);

            //得到所有的文件件路径和所有文件的路径
            getSourceFolder(downloadPath);

            Debug.Log("文件的数量:"+fileVessel.Count);

            int allFileCount = fileVessel.Count;
            int currentDownloadCount = 0;

            //新建文件夹
            for (int i = 0; i < folderVessel.Count; i++)
            {
                string tp = folderVessel[i].Replace(downloadPath, savePath);
                Directory.CreateDirectory(tp);
            }

            //循环下载
            for (int i = 0; i < fileVessel.Count; i++)
            {
                currentDownloadCount = i;

                string installUrl = fileVessel[i].Replace(downloadPath, savePath);

                Debug.Log("加载的路径:" + fileVessel[i]); //
                Debug.Log("安装的路径:" + installUrl);  //

                UnityWebRequest request = UnityWebRequest.Get(fileVessel[i]);

                yield return request.SendWebRequest();

                if (request.isNetworkError || request.isHttpError)
                {
                    Debug.Log("Download Error:" + request.error);
                }
                else if (request.isDone)
                {
                    byte[] results = request.downloadHandler.data;

                    Debug.Log("资源长度:" + results.Length);  //长度都是相同的

                    FileInfo fileInfo = new FileInfo(installUrl);
                    FileStream fs = fileInfo.Create();

                    //FileStream fs = new FileStream(installUrl, FileMode.Create);

                    //fs.Write(字节数组, 开始位置, 数据长度);
                    fs.Write(results, 0, results.Length);
                    fs.Flush(); //文件写入存储到硬盘
                    fs.Close(); //关闭文件流对象
                    fs.Dispose(); //销毁文件对象
                }

                if (LoadProgress != null)
                {
                    LoadProgress(currentDownloadCount, allFileCount);
                }

                request.Dispose();
            }

            yield return 0;


            if (DownLoad != null)
                DownLoad();
        }


```c#

        void getSourceFolder(string folder)
        {
            getSourceFile(folder);
            DirectoryInfo di = new DirectoryInfo(folder);
            foreach (DirectoryInfo subDir in di.GetDirectories())
            {
                string newFloder = folder + "/" + subDir.Name; 
                folderVessel.Add(newFloder);
                getSourceFolder(newFloder);
            }
        }

        void getSourceFile(string path)
        {
            string newString = null;

            foreach (string subDir in Directory.GetFiles(path))
            {
                newString = subDir.Replace('\\', '/');
                fileVessel.Add(newString);
            }
        }

```

img

img

  • 写回答

3条回答 默认 最新

  • qq_41858157 2023-03-22 09:03
    关注

    压缩一下,然后再下载,你试一试,应该是可以

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月23日
  • 已采纳回答 3月22日
  • 修改了问题 3月22日
  • 赞助了问题酬金15元 3月22日
  • 展开全部

悬赏问题

  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”