微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows / NTFS:目录中的文件数量,不包括它们

有没有办法在Windows中获取目录中的文件数量(非recursion是足够好的)没有通过FindFirst/NextFile枚举它们的潜在的重大开销?

目的是估计需要处理多less个文件

目录结构是已知的而且不深,文件夹通常不包含未知文件

由于数据不是必不可less的,并且文件夹几乎总是在本地驱动器上,所以可以接受NTFS特定的命令(假设不需要提升)。

有任何想法吗?

如何以及何时使用/ dev / shm来提高效率?

获取文件修改时间到纳秒精度

(为什么)是FSCTL_SET_OBJECT_ID危险?

将statvfs转换为正确的百分比

Windows:使用File.listRoots显示映射的networking驱动器

cd / bash在符号链接上的行为

在本地NTFS驱动器上查找回收站

为什么inode号从1开始而不是0?

编译一个新的文件系统到Linux内核

看看哪些文件正在增长在一个目录在Linux

跟踪目录中文件数量一个开销,不能为文件系统提供任何好处,所以他们都没有。

计数本地驱动器上的文件对于大多数用途来说应该足够快。 处理这些文件的时间肯定会占用一小部分时间。

假设索引服务正在运行并且目录被索引,我们可以查询目录并计算给定目录上的文件

我不知道查询目录是否更快,唯一的想法是在我脑海中。

问候。

VB.NET中的示例代码

Sub Main() Try ' Catalog Name Dim strCatalog As String = "System" Dim strQuery As String strQuery = "Select DocPageCount,DocTitle,Filename,Size,PATH,URL from ScopE('shallow traversal of ""C:Windows""')" Dim connString As String = "Provider=MSIDXS.1;Integrated Security .='';Data Source='" & strCatalog & "'" Dim cn As New System.Data.OleDb.OleDbConnection(connString) cn.open() Dim cmd As New System.Data.OleDb.OleDbCommand(strQuery,cn) Dim rdr As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader() Dim files As Integer = 0 While rdr.Read() files += 1 Console.WriteLine("Path: {0} Filename: {1} Size : {2}",rdr("PATH"),rdr("Filename"),rdr("Size")) End While rdr.Close() rdr = nothing cmd.dispose() cmd = nothing cn.Close() Console.WriteLine("Total Files: {0}",files) Catch ex As Exception Console.WriteLine(ex) End Try End Sub

更多信息: 使用Microsoft索引服务和ASP.NET搜索您的网站

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐