加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Passthru读取文件夹中的所有文件

发布时间:2020-12-15 07:42:47 所属栏目:百科 来源:网络整理
导读:我有非常不寻常的要求: 我想加载特定文件夹中的所有文件(到目前为止很容易).我需要内存占用非常小的东西. 现在它变得复杂(至少对我而言).我不需要存储或使用文件的内容 – 我只需要强制块级缓存机制来缓存该特定文件夹使用的所有块. 我知道有很多不同的方法
我有非常不寻常的要求:
我想加载特定文件夹中的所有文件(到目前为止很容易).我需要内存占用非常小的东西.

现在它变得复杂(至少对我而言).我不需要存储或使用文件的内容 – 我只需要强制块级缓存机制来缓存该特定文件夹使用的所有块.

我知道有很多不同的方法(BinaryReader,StreamReader等),但我的情况很特别,因为我不关心内容……

知道如何实现这一目标的最佳方法是什么?

我应该使用小缓冲区吗?但由于它会很快填满,不会冲洗缓冲区实际上会减慢操作速度吗?

谢谢,
马丁

解决方法

我可能会 memory map文件,然后循环访问每个文件的元素以常规(块间隔)间隔.

当然假设你能够使用.Net 4.0.

在伪代码中你会做类似的事情:

using ( var mmf = MemoryMappedFile.CreateFromFile( path ) )
{    
    for ( long offset = 0 ; offset < file.Size ; offset += block_size )
    {
        using ( var acc = accessor = mmf.CreateViewAccessor(offset,1) )
        {
            acc.ReadByte(offset);
        }
    }
}

但是在一天结束时,每种方法都会有不同的性能特征,因此您可能需要使用一些试验和错误来找出哪种方法效果最好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读