惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
T
Tor Project blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
爱范儿
爱范儿
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
Vercel News
Vercel News
美团技术团队
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
L
LangChain Blog
IT之家
IT之家
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
Hacker News: Ask HN
Hacker News: Ask HN
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
量子位
Project Zero
Project Zero
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
T
Tenable Blog
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 叶小钗
Know Your Adversary
Know Your Adversary
L
Lohrmann on Cybersecurity
C
Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
I
InfoQ
P
Privacy & Cybersecurity Law Blog
Spread Privacy
Spread Privacy
Martin Fowler
Martin Fowler
腾讯CDC
S
Security @ Cisco Blogs
F
Fortinet All Blogs

博客园 - 蹲在路边写代码

8000401a错误解决方案(Office Word,Excel,PowerPoit应用程序无法访问) SQL Server 2005 无法删除用户的解决方法 改善SQL语句的效率的几条原则,不断积累中 一些常用的WebServices 转Javascript的IE和Firefox兼容性汇编 - 蹲在路边写代码 - 博客园 转--使用 Request.QueryString 接受参数时,跟编码有关的一些问题 - 蹲在路边写代码 IE的showModalDialog与FireFox的window.open 父子窗口传值示例 三种常见选项卡效果 - 蹲在路边写代码 - 博客园 C#高级编程学习笔记(五)字符串与正则表达式 C#高级编程学习笔记(四) 内存管理和指针 SQL SELECT 语句完整的执行顺序 C#高级编程学习笔记(三)委托和事件 C#高级编程学习笔记(二)运算符和类型转换 C#高级编程学习笔记(-)C#基础 对象和类型 继承 构造函数和析构函数的原理及在C#中的运用(转载) CSS在IE与Firefox下的兼容性 CSS Hack 汇总 .NET的ORM工具SubSonic2.03的配置 ASP.NET的页面间传值方法 - 蹲在路边写代码 - 博客园
遍例指定目录及子目录下的所有文件添加进数据库
蹲在路边写代码 · 2011-06-21 · via 博客园 - 蹲在路边写代码

如何获取指定目录包含的文件和子目录
    1. DirectoryInfo.GetFiles():获取目录中(不包含子目录)的文件,返回类型为FileInfo[],支持通配符查找;
    2. DirectoryInfo.GetDirectories():获取目录(不包含子目录)的子目录,返回类型为DirectoryInfo[],支持通配符查找;
    3. DirectoryInfo. GetFileSystemInfos():获取指定目录下(不包含子目录)的文件和子目录,返回类型为FileSystemInfo[],支持通配符查找;
如何获取指定文件的基本信息;
    FileInfo.Exists:获取指定文件是否存在;
    FileInfo.Name,FileInfo.Extensioin:获取文件的名称和扩展名;
    FileInfo.FullName:获取文件的全限定名称(完整路径);
    FileInfo.Directory:获取文件所在目录,返回类型为DirectoryInfo;
    FileInfo.DirectoryName:获取文件所在目录的路径(完整路径);
    FileInfo.Length:获取文件的大小(字节数);
    FileInfo.IsReadOnly:获取文件是否只读;
    FileInfo.Attributes:获取或设置指定文件的属性,返回类型为FileAttributes枚举,可以是多个值的组合
    FileInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTime:分别用于获取文件的创建时间、访问时间、修改时间;

下面实例实现把文件信息读入数据库,发现使用注释部分测试的时候总是返回错误,使用前面的foreach可以正常读进数据库,不知道什么原因。

View Code

        [Test]
        [Category(
"Created")]
        
public void CanAddFileToDB()
        {
            ISessionFactory factory 
= new SessionFactory();
            IUnitOfWork unitOfWork 
= factory.CurrentUoW;
            IRepository repository 
= new Repository(unitOfWork);string path = "U:\\幼教视频\\";
            
            List
<FileInfo> listfi = new List<FileInfo>();foreach (FileInfo fi in FindFile(path, listfi))
            {
                var f 
= new Baby.Domain.Domain.UploadFile
                {
                    Id 
= Guid.NewGuid(),
                    FileName 
= fi.Name,
                    Descript 
= "descript",
                    FileType 
= "rmvb",
                    IsActive 
= true,
                    FileSize 
= (int)((fi.Length / 1024/ 1024),
                    FilePath 
= fi.DirectoryName,
                    IsWeb 
= false,
                    Postfix 
= fi.Extension,
                    SortOrder 
= 20,
                    CreatedBy 
= "system",
                    CreatedOn 
= System.DateTime.Now,
                    UpdatedBy 
= "System",
                    UpdatedOn 
= DateTime.Now
                };
                
                
if (repository.GetList<Baby.Domain.Domain.UploadFile>().Where(a => a.FileName == fi.Name).Count() == 0)
                {
                    unitOfWork.BeginTransaction(); 
                    repository.AddEntity(f);
                    unitOfWork.CommitTransaction();
                    Assert.That(f, Has.Property(
"Id").Not.EqualTo(Guid.Empty));
                };
             }
//FindFile(path, listfi).ForEach(fi =>
            
//{
            
//    if (repository.GetList<Baby.Domain.Domain.File>().Where(a => a.FileName == fi.Name).Count() == 0)
            
//    {
            
//        var f = new Baby.Domain.Domain.File
            
//        {
            
//            Id = Guid.NewGuid(),
            
//            FileName = fi.Name,
            
//            Descript = "descript",
            
//            FileType = "rmvb",
            
//            IsActive = true,
            
//            FileSize = (int)((fi.Length / 1024) / 1024),
            
//            FilePath = fi.DirectoryName,
            
//            IsWeb = false,
            
//            Postfix = fi.Extension,
            
//            SortOrder = 20,
            
//            CreatedBy = "system",
            
//            CreatedOn = System.DateTime.Now,
            
//            UpdatedBy = "System",
            
//            UpdatedOn = DateTime.Now
            
//        };//        unitOfWork.BeginTransaction();
            
//        repository.AddEntity(fi);
            
//        unitOfWork.CommitTransaction();
            
//        Assert.That(fi, Has.Property("Id").Not.EqualTo(Guid.Empty));
            
//    }
            
//});
        }
        
public List<FileInfo> FindFile(string dirPath,List<FileInfo> fi) //参数dirPath为指定的目录
        {
            
//在指定目录及子目录下查找文件,并把文件加入到list中

            DirectoryInfo Dir = new DirectoryInfo(dirPath);
            
try
            {
                
//查找子目录 
                foreach (DirectoryInfo d in Dir.GetDirectories())
                {
                    FindFile(Dir 
+ d.ToString() + "\\",fi);
                }
                
foreach (FileInfo f in Dir.GetFiles("*.rmvb")) //查找文件
                {
                    fi.Add(f);
                }
            }
            
catch (Exception e)
            {
             }
            
return fi;
        }