C#检查本地磁盘中是否存在Torrent文件中的文件

  上一篇文章介绍了基于BencodeNET程序集解析并显示Torrent文件中的文件清单,本文在此基础上检查本地磁盘是否已存在Torrent文件中列出的文件,重点显示那些未下载过的文件。
  程序的主要功能包括:
  1)选择并解析Torrent文件,支持查看Torrent文件内容,本部分功能复用上一篇文章中的代码;
  2)支持从本地多个文件夹中搜索是否存在本地文件;
  3)支持去掉Torrent文件中的文件名的开头和结尾部分,便于搜索本地文件夹中的同名文件(这里还可以优化,指定正则表达式,不过没有做);
  4)按多种方式查看检索结果。

  程序的逻辑不复杂,用的都是.net的基本函数,主要代码如下:

	public class FindRecord
    {
        public FindRecord()
        { }

        public int Index;
        public string TorrentFileName;
        public string ProcessedFileName;
        public string FileExtension;
        public string TorrentFullPath;
        public string LocaFilePath;
    }
	...
	...
			foreach (MultiFileInfo f in m_torrentFileInfo.Files)
            {
                FindRecord fr = new FindRecord();
                fr.TorrentFileName = f.FileName;
                fr.TorrentFullPath = f.FullPath;
                fr.Index = m_lstFindResults.Count + 1;
                fr.ProcessedFileName = Path.GetFileNameWithoutExtension(fr.TorrentFileName);
                fr.FileExtension = Path.GetExtension(fr.TorrentFileName);

                if (cbRemovePrefix.Checked &&
                   !string.IsNullOrEmpty(txtRemovePrefix.Text) &&
                   fr.ProcessedFileName.StartsWith(txtRemovePrefix.Text))
                {
                    fr.ProcessedFileName = fr.ProcessedFileName.Substring(txtRemovePrefix.Text.Length);
                }

                if(cbRemovePostfix.Checked &&
                   !string.IsNullOrEmpty(txtRemovePostfix.Text) &&
                   fr.ProcessedFileName.EndsWith(txtRemovePostfix.Text))
                {
                    fr.ProcessedFileName = fr.ProcessedFileName.Substring(0, fr.ProcessedFileName.Length - txtRemovePostfix.Text.Length);
                }

                foreach(string findDir in lstFindPathes.Items)
                {
                    string[] searchResult = Directory.GetFiles(findDir, fr.ProcessedFileName + fr.FileExtension, SearchOption.AllDirectories);
                    if(searchResult==null || searchResult.Length<=0)
                    {
                        continue;
                    }

                    fr.LocaFilePath = searchResult[0];
                    break;
                }

                m_lstFindResults.Add(fr);
            }

            DisplayResult(m_lstFindResults, GetFilterOption());
	...
	...

  程序的运行效果如下图所示,代码已上传至GitHub,地址为:https://github.com/guochao2299/TorrentInfoReader
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值