比如:bitcomet在硬盘上创建几个G大小的文件时,没有一点延迟,不像快车。用.net怎样实现这样的效果?谢谢

解决方案 »

  1.   

    System.IO.File.Create("", 20480000, FileOptions.Asynchronous)
    最后参数可以不带File.Create 方法 (String, Int32, FileOptions) 
    参数:路径,缓冲大小,文件属性
    注意:此方法在 .NET Framework 2.0 版中是新增的。 创建或改写指定的文件,并指定缓冲区大小和一个描述如何创建或改写该文件的 FileOptions 值
    File.Create(String, Int32)
    Vs2003只有一个路径和缓存的方法——也能实现你的要求;
    ==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
    联系方式:Q64180940(请清楚注明业务还是技术咨询)  全天在线
    ==================================================================
      

  2.   

    内存映射对这种快速创建超大型文件没有帮助想搞这个,要么直接写FAT,要么做延迟加载
      

  3.   

    现在的程序员啊...思维都僵化了...using (FileStream fs = File.Create(filename))
    {
    fs.Seek(filelength, SeekOrigin.End);
    fs.WriteByte(0);
    }小于9兆T的文件(只要你有那么大硬盘OS也支持的话)...无论多大...花的时间都是0s...
      

  4.   

    对了要说明一点...这种方式建立的文件叫稀疏文件...Windows系统中NTFS磁盘才支持...
      

  5.   

    楼上的试验过了没有,想使用Using,呵呵,必须实现Dispose而且你的代码生成文件大小依旧会是0,一般这种估计用API“或许”能实现纯粹的.Net,很难
      

  6.   

    楼上...你真的试验过?FileStream没有实现Dispose?生成文件大小依旧会是0?你用的哪里的.NET?你的磁盘是不是NTFS?
      

  7.   

    环境不会差的,呵呵~~第一:
    Using Fs = File.Create("D:\AAA.Txt")
    在我这里提示的就是没有实现IDisposeable 接口
    End Using第二:
    创建出来文件,依旧是0字节我也希望有个好的答案——大家探讨问题,怎么会不去试验就乱说
    20分不值得我这么费劲——而且看楼主信誉分,给不给还难说,只是想找一个答案罢了。
    如果你的方法真的好用——当然更好Dim Fs As System.IO.FileStream
    Fs = File.Create("D:\AAA.Txt")
    Fs.Seek(124000000, SeekOrigin.End)
    Fs.WriteByte(0)
    我的写法——我只会Vb.net,不知道有没有问题,请检查
      

  8.   

    我的写法——我只会Vb.net,不知道有没有问题,请检查
    --------------
    看了你的代码...我无话可说了...自己查MSDN文档去...
      

  9.   

    比较了一下差异
    Dim Fs As System.IO.FileStream= File.Create("D:\AAA.Txt")
    Fs.Seek(124000000, SeekOrigin.End)
    Fs.WriteByte(0)Fs.Dispose() 
    '------------问题出在这里,Using自动Dispose,
    而我没有进行Dispose,就会造成,写入一个文件需要很长时间;用Using的话,就是
    Using fs As System.IO.FileStream = File.Create("D:\A.Txt")
       fs.Seek(1024000000, SeekOrigin.[End])
       fs.WriteByte(0)
    End UsingUsing这个东西我不常用,没注意写错了;
    ========================================================
    答案找到了——不过你的为人,不敢恭维;
    探讨技术,谁都会有所失误——一个Dispose的问题而已~~
      

  10.   

    这和Using常用不常用没有关系!希望vrhero继续保持助人的热心。