C#的独立存储器和映射内存

独立存储器和映射内存都是用来处理程序数据问题。独立存储器可以用来临时保存程序的一些不重要数据 ,映射内存文件则可以用来解决程序数据读取的问题。当程序在运行过程中需要加载大量的外部数据时,用它 来做一个数据缓存区域将是一个不错的选择。

独立存储器

static void UserIsolationFile()  

{  

//this file was saved into the path: C:\Users\you account\AppData\Local\IsolatedStorage
    IsolatedStorageFile storFile = IsolatedStorageFile.GetUserStoreForDomain();  

    IsolatedStorageFileStream storStream = new IsolatedStorageFileStream("storagefile.txt", 

FileMode.Create, FileAccess.Write);  

    StreamWriter writer = new StreamWriter(storStream);  

    writer.WriteLine("You are dead!");  

    writer.Flush();  

    writer.Close();  

    storStream.Close();  

    storFile.Close();  

    IsolatedStorageFile storFile2 = IsolatedStorageFile.GetUserStoreForDomain();  

    string[] filenames = storFile2.GetFileNames();  

    foreach (string filename in filenames)  

    {  

        if (filename != "storagefile.txt")  

        {  

            continue;  

        }  

        using (IsolatedStorageFileStream stream = new

    IsolatedStorageFileStream("storagefile.txt", FileMode.Open))  

        {  

            using (StreamReader reader = new StreamReader(stream))  

            {  

                Console.WriteLine(reader.ReadToEnd());  

            }  

        }  

    }  

    Console.ReadKey();  

}

映射内存

这个东西怎么感觉很像C呀,哈哈。如有程序需要频繁的读写文本类文件可以这它来做一 个读写缓存提高程序的效率。

static void MappingMemory()  

{   

using(var mmFile=MemoryMappedFile.CreateFromFile("d:\\mappingmemory.txt"

,FileMode.Create  

,"fileHandle",1024*1024))  

    {  

        string valueToWrite = "Written to the mapped-memory file on "+ DateTime.Now.ToString();  

        var myAccessor = mmFile.CreateViewAccessor();  

        myAccessor.WriteArray<byte>(0, Encoding.ASCII.GetBytes(valueToWrite), 0  

, valueToWrite.Length);  

        var readOut = new byte[valueToWrite.Length];  

        myAccessor.ReadArray<byte>(0, readOut, 0, readOut.Length);  

        Console.WriteLine("The data is:" + Encoding.ASCII.GetString(readOut));  

        Console.ReadKey();  

    }  

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索内存
, 数据
, 程序
, console
独立
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-08-31 21:20:19

C#的独立存储器和映射内存的相关文章

《windows核心编程》 17章 内存映射文件

内存映射文件主要用于以下三种情况: 系统使用内存映射文件载入并运行exe和dll,这大量节省了页交换文件的空间以及应用程序的启动时间 开发人员可以使用内存映射文件来访问磁盘上的数据文件.这使得我们可以避免直接对文件IO操作和对文件内存进行缓存 进程间通讯 17.1 映射到内存的可执行文件和DLL 当一个线程调用CreateProcess的时候,系统会执行收入步骤: 1.判断exe位置,如果无法找到exe那么不会创建进程,这时会CreateProcess返回FALSE 2.创建一个新的进程内核对象

c++-求教!通过内存映射,实现生成的数组存储到文件中,显示出来头100个数?

问题描述 求教!通过内存映射,实现生成的数组存储到文件中,显示出来头100个数? 我目前就了解个大概,现在我不明白const DWORD mmf_size = 512*1024;//?这个地方不懂 ,这个原来的代码部分,我拿别人的代码改的,增加了自己的double的动态数组SigNRead,这个怎么弄 我就想实现,通过内存映射 实现写入 读取 double数组 数组有 1列 90000行个double数组成. #include #include #include #include #define

使用Java内存映射(Memory-Mapped Files)处理大文件

NIO中的内存映射 (1)什么是内存映射文件 内存映射文件,是由一个文件到一块内存的映射,可以理解为将一个文件映射到进程地址,然后可以通过操作内存来访问文件数据.说白了就是使用虚拟内存将磁盘的文件数据加载到虚拟内存的内存页,然后就可以直接操作内存页数据. 我们读写一个文件使用read()和write()方法,这两个方法是调用系统底层接口来传输数据,因为内核空间的文件页和用户空间的缓冲区没有一一对应,所以读写数据时会在内核空间和用户空间之间进行数据拷贝,在操作大量文件数据时会导致性能很低,使用内存

3Linux内存映射,mmap()函数

 1mmap()依赖的头文件 #include <sys/mman.h> 2函数声明: void *mmap(void *addr, size_t length, intprot, int flags,      intfd, off_t offset); int munmap(void *addr, size_t length); 函数说明: mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存 地址,对文件的读写可以直接用指针来做而不需要read/write

内存映射文件

1.简介 内存映射文件,机器学习读大文件时可用,效率比传统IO要高. 用于内存映射文件的这部分内存,在Java的堆空间以外. 常见nio相关类见< java NIO>,http://blog.csdn.net/chuchus/article/details/51886586  . 1.1 传统读写 在传统的文件IO中,底层是类似C语言的read().write()操作 ,操作系统  由当前的[用户态]切换到[内核态],然后读数据至[OS缓冲区],再拷贝到[进程的私有地址空间]中去,这样便完成了

每个程序员都应该了解的内存知识(2)-CPU caches

英文原帖:http://lwn.net/Articles/252125/ 原翻译贴:http://www.oschina.net/translate/what-every-programmer-should-know-about-cpu-cache-part2       现在的CPU比25年前要精密得多了.在那个年代,CPU的频率与内存总线的频率基本在同一层面上.内存的访问速度仅比寄存器慢那么一点点.但是,这一局面在上世纪90年代被打破了.CPU的频率大大提升,但内存总线的频率与内存芯片的性能

dll占的究竟是谁的空间?——浅谈Windows内存机制

近来工作比较空闲,所以就上111cn.net看看帖子什么的,两个多月前,我在VC/MFC板块中发了这么一个帖子:dll占的究竟是谁的空间?详细参考:   http://topic.111cn.net/u/20080123/16/310330cd-e262-4534-b8c8-9bff892c7f21.html   关于这个帖子,我后面作了个总结,意思是说:dll占用的空间不属于某一个调用它的进程,dll是属于系统的,我得出这个"标准答案"的时候自己算是比较满意了,于是结了贴,事情并没这

内存管理单元编程实例【转】

转自:http://blog.chinaunix.net/uid-29091195-id-4020919.html 一.MMU初步了解    概念:内存管理单元(memory management unit),简称MMU    主要作用:负责虚拟地址到物理地址之间的转换             提供硬件机制的内存访问权限检查        发展由来:由于程序的大小逐步发展到大于内存的大小这一问题的出现    导致了虚拟存储器的产生,虚拟存储器的基本思想是:数据.堆栈的总    大小可以超越物理存

Linux下C编程:内存映像那些事儿

内存映像其实就是在内存中创建一个和外存文件完全相同的映像.用户可以将整个文件映射到内存中也可以部分映射到内存.系统会将对内存映像的改动如实的反映到外存文件中.从而实现了通过内存映像对外存文件的操作. 内存映像的特点: 1.可以加快对IO的操作速度. 2.用户可以通过指针对文件进行操作,间接~~~ 3.实现了文件数据的共享,将外存文件映射到共享内存中,很方便的实现了数据共享,并能完成把数据保存到外存的工作. 注:内存映像只能对内部可以定位的文件进行操作,如普通文件.不能对管道,套接字文件进行操作.