首页»版块 智慧生活 路由 (代码已更新)【耀探索】 C#语言开发实时监控下载立方. ...

(代码已更新)【耀探索】 C#语言开发实时监控下载立方...

[复制帖子标题和链接]

768230

秀数码 玩机达人  发表于 2014-6-19 15:59:23 属地未知 来自:浏览器
本帖最后由 _菜鸟玩手机 于 2014-7-1 16:36 编辑

作为一名程序猿,我玩了好几天荣耀立方,然后抱着探索的想法来玩荣耀立方,虽然失败了,但是还是要把探索的过程发出来,结果不重要重要的是过程。大家集思广益争取多玩出几种可能。好了,不多说了,下面我给大家分享我的教程吧,希望高手指导一二。
我的思维是这样的:荣耀立方的硬盘有1T,空间非常大,而且通过工具就可以在电脑上看到立方的盘,然后可以把立方的空间一部分作为FTP,然后通过代码来检测,如果网盘中有新的文件,那么就直接下载到本地。
想到这里,我就开始着手配置环境并且写代码了。
1.配置本机FTP环境
这里配置FTP环境没什么难度,度娘一下“FTP搭建”然后跟着教程一步一步做下去就行,这里就不再赘述,这里主要放在代码上。
2.用代码实现:
首先我没把路由盘作为FTP,现在本地建立做测试用。(从这里我就错了)不过最后效果还是不错,可以将本地一个FTP中的文件夹中的文件下载(如果有新文件也下载),下面来展示一下效果图。
(代码已更新)【耀探索】 C#语言开发实时监控下载立方... (代码已更新)【耀探索】 C#语言开发实时监控下载立方... (代码已更新)【耀探索】 C#语言开发实时监控下载立方... (代码已更新)【耀探索】 C#语言开发实时监控下载立方...
特别说明:效果图显示的是从电脑上的测试文件夹下载文件到FTP文件夹,这样是成功的!
但是当在程序中把测试文件夹建立在华为路由网盘中,就会失败,下载不到,显示不到权限。
代码开发环境: VS2012   C#语言
由于时间紧迫和个人能力有限,这次探索第七个失败了,但是我相信有大神可以将我的程序修改并成功。朋友们不懂得可以问我,和我交流。
部分核心代码:(如想看源码请在楼下留言留下邮箱)时间紧迫,代码没加注释望谅解!
private void DownloadMutifiles(string subFolder)
        {
            string ftpUrl = this.Configuration.LocalAddress.ToString();
            string downUrl = "ftp://" + ftpUrl + @"/" + subFolder + @"/"
            string saveUrl = this.Configuration.DownAddress;
            List<string> files = new List<string>();
            List<string> directories = new List<string>();
            GetFileList(files, directories, downUrl);
            foreach (var filename in files)
            {
                if (_fileList.Contains(filename))
                {
                    continue;
                }
                _fileList.Add(filename);
                DownLoadFile(downUrl + filename, saveUrl + filename);
                Console.WriteLine(filename);
            }
            foreach (var item in directories)
            {
                DownloadMutifiles(subFolder + item);
            }
        }


        public  void DownLoadFile(string downloadUrl, string saveFileUrl)
        {
            Stream responseStream = null;
            FileStream fileStream = null;
            StreamReader reader = null;
            try
            {
                FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(downloadUrl);
                downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                string ftpUser = this.Configuration.UserName;
                string ftpPassWord = this.Configuration.UserPassWord;
                downloadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);
                FtpWebResponse downloadResponse = (FtpWebResponse)downloadRequest.GetResponse();
                responseStream = downloadResponse.GetResponseStream();
                fileStream = File.Create(saveFileUrl);
                byte[] buffer = new byte[1024];
                int bytesRead;
                while (true)
                {
                    bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                    if (bytesRead == 0)
                        break;
                    fileStream.Write(buffer, 0, bytesRead);
                }
                if (this.Configuration.FileCallback != null)
                {
                    this.Configuration.FileCallback(saveFileUrl);
                }
            }
            catch (WebException ex)
            {
                int count = 1;
                if (count < 4)
                {
                    Thread.Sleep(1000);
                    DownLoadFile(downloadUrl, saveFileUrl);
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
                if (fileStream != null)
                {
                    fileStream.Close();
                }
            }
        }
  public static string[] GetFilesList(string url)
        {
            string[] downloadFiles;
            StringBuilder result = new StringBuilder();
            FtpWebRequest reqFTP;
            try
            {
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential("Administrator", "123123");
                reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
                WebResponse response = reqFTP.GetResponse();

                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);

                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                // to remove the trailing ´\n´
                result.Remove(result.ToString().LastIndexOf(´\n´), 1);

                reader.Close();
                response.Close();
                return result.ToString().Split(´\n´);
            }
            catch (Exception ex)
            {
                // System.Windows.Forms.MessageBox.Show(ex.Message);
                Console.Write(ex);
                downloadFiles = null;
                return downloadFiles;
            }
        }
最后,非常感谢大家,虽然探索失败了,但是我觉得过程要比结果更为重要,希望大家支持我!

评论30
唯爱智能科技 玩机达人  发表于 2014-6-19 16:35 属地未知 来自:浏览器
写的不错,楼主很用心,赞一个。
秀数码 玩机达人  发表于 2014-6-19 23:16 属地未知 来自:浏览器
easternares 发表于 2014-6-19 16:01
有DLNA,有samba干嘛还加FTP呢,楼主这个可以花时间弄点别的呀

各种捣鼓吧,探索探索,哈哈,感谢你对我的支持!
秀数码 玩机达人  发表于 2014-6-19 23:17 属地未知 来自:浏览器
败家小喵 发表于 2014-6-19 16:04
赞一个哦!~~~~~····

哈哈,就是抽空玩玩,突然的一个想法
秀数码 玩机达人  发表于 2014-6-19 23:17 属地未知 来自:浏览器

感谢你对我的支持,可惜没成功,但是探索的过程有呢,哈哈
秀数码 玩机达人  发表于 2014-6-19 23:18 属地未知 来自:浏览器
唯爱_子恒 发表于 2014-6-19 16:35
写的不错,楼主很用心,赞一个。

感谢,你对我的支持,用心了,时间有点紧张,哈哈
秀数码 玩机达人  发表于 2014-6-20 08:52 属地未知 来自:浏览器
easternares 发表于 2014-6-20 08:09
强烈支持开发点别的东西,比如某些功能插件

感谢你对我的支持,我会尽力去研究立方,争取整出好东西
秀数码 玩机达人  发表于 2014-6-20 08:54 属地未知 来自:浏览器
一叶孤萍 发表于 2014-6-20 08:27
不明觉厉啊,楼主好厉害的样子啊

感谢你对我的支持,
秀数码 玩机达人  发表于 2014-6-20 08:56 属地未知 来自:浏览器
文丑 发表于 2014-6-20 00:15
这个对自己也是一种锻炼,我们支持这种方式的玩机

感谢版主的支持,我下去再研究研究,哈哈
秀数码 玩机达人  发表于 2014-6-20 12:47 属地未知 来自:浏览器
大家有需要源码的留下邮箱,我发给大家
您需要登录后才可以评论 登录 | 立即注册
简体中文 - China
快速回复 返回顶部 返回列表