首页 > 其他 > 详细

操作系统——设置虚拟内存(Virtual Memory)的原理

时间:2014-04-17 17:54:30      阅读:742      评论:0      收藏:0      [点我收藏+]

大文件,如4G大小,不能像普通文件那样一次读入内存中,因此需要按块读取文件,然后进行处理。典型用例,如在外部排序中,需要对大文件进行按块读取。

C实现按块读取

FILE *fp;
fp=fopen("bigfile.txt","rb");
int strNum;
char buffer[100];//每块大小
while((strNum=fread(buffer,sizeof(char),100,fp)>0)//不足100个字节时,返回实际读取个数
{
     //对该块进行操作
}

C#实现

static void Main(string[] args)
       {
           using (FileStream outStream = new FileStream(@"C:\2.zip", FileMode.Create))
           {
               using (FileStream fs = new FileStream(@"C:\1.zip", FileMode.Open))
               {
                   //缓冲区太小的话,速度慢而且伤硬盘
                   //声明一个4兆字节缓冲区大小,比如迅雷也有一个缓冲区,如果没有缓冲区的话,
                   //每下载一个字节都要往磁盘进行写,非常伤磁盘,所以,先往内存的缓冲区写字节,当
                   //写够了一定容量之后,再往磁盘进行写操作,减低了磁盘操作。
                   byte[] bytes = new byte[1024 * 1024 * 4];
                   int readBytes;
                   //第二个参数Offset表示当前位置的偏移量,一般都传0
                   while ((readBytes = fs.Read(bytes, 0, bytes.Length)) > 0) //读取的位置自动往后挪动。
                   {
                       //readBytes为实际读到的byte数,因为最后一次可能不会读满。
                       outStream.Write(bytes, 0, readBytes);
                   }
               }
           }
           Console.WriteLine("拷贝成功");
       }


操作系统——设置虚拟内存(Virtual Memory)的原理,布布扣,bubuko.com

操作系统——设置虚拟内存(Virtual Memory)的原理

原文:http://blog.csdn.net/lhc1105/article/details/23915741

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!