网站首页
公司简介
软件开发
网站建设
产品展示
经典案例
解决方案
一卡通系统
短信服务
联系我们
网站建设 主机托管 快速建站 QQ:21543821 电话:0731-4454366 手机:(0)13873166650
  您的位置:首页 >> 技术文章 >> ASP.NET

C#读取大文本文件,效率高,速度快 DllImport("kernel32.dll")

来源:原创  发布人:www.ruanzhi.com  发表时间:2010-4-26  点击:  字体: 【双击滚动窗口】

以下是代码片段:

[DllImport("kernel32.dll")]
        public static extern IntPtr CreateFileMapping(IntPtr hFile,
            IntPtr lpFileMappingAttributes, uint flProtect,
            uint dwMaximumSizeHigh,
            uint dwMaximumSizeLow, string lpName);

        [DllImport("kernel32.dll")]
        public static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint
            dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow,
            IntPtr dwNumberOfBytesToMap);

        [DllImport("kernel32.dll")]
        public static extern bool UnmapViewOfFile(IntPtr lpBaseAddress);

        [DllImport("kernel32.dll")]
        public static extern bool CloseHandle(IntPtr hObject);

        [DllImport("kernel32.dll")]
        public static extern IntPtr CreateFile(string lpFileName,
            int dwDesiredAccess, FileShare dwShareMode, IntPtr securityAttrs,
            FileMode dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile);

        [DllImport("kernel32.dll")]
        public static extern uint GetFileSize(IntPtr hFile, IntPtr lpFileSizeHigh);

上面是API的引用

 private string returnback(string path)
        {
            string str = "";
            IntPtr vFileHandle = CreateFile(path,
        GENERIC_READ | GENERIC_WRITE, FileShare.Read | FileShare.Write,
        IntPtr.Zero, FileMode.Open,
        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero);
            if (INVALID_HANDLE_VALUE != (int)vFileHandle)
            {
                IntPtr vMappingHandle = CreateFileMapping(
                    vFileHandle, IntPtr.Zero, PAGE_READWRITE, 0, 0, "~MappingTemp");
                if (vMappingHandle != IntPtr.Zero)
                {
                    IntPtr vHead = MapViewOfFile(vMappingHandle,
                        FILE_MAP_COPY | FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, IntPtr.Zero);
                    if (vHead != IntPtr.Zero)
                    {
                        uint vSize = GetFileSize(vFileHandle, IntPtr.Zero);
                        byte[] temp = new byte[vSize];
                        for (int i = 0; i < vSize; i++)
                        {
                            byte vTemp = Marshal.ReadByte((IntPtr)((int)vHead + i));
                            temp[i] = vTemp;
                        }
                        ASCIIEncoding encoding = new ASCIIEncoding();
                        str = encoding.GetString(temp).Replace("\r\n", ",");
                        UnmapViewOfFile(vHead);
                    }
                    CloseHandle(vMappingHandle);
                    CloseHandle(vHead);
                }
                CloseHandle(vFileHandle);
               
            }
            return str;
        }

上面具体的读取方法。

Tag标签:C#,asp.net VB 文本文件
关闭窗口】  【打印此页】 
  • 上一篇文章:C#中关闭窗口与FormClosing事件
  • 推荐产品
    ·短信群发软件及销售
    ·电子政务系统(标准版)
    ·流动人口管理系统(计...
    ·人力资源管理系统
    ·社区计生网格化管理系统
    ·社区综合事务管理系统
    ·网格化电子政务
    最新发布
    ·短信群发软件及销售
    ·长沙网站制作::快速建...
    ·自助型网站建设
    ·简约型网站建设
    ·实惠型网站建设
    ·标准型网站建设
    ·大型行业网站建设
    相关信息
    ·C#中关闭窗口与FormClo...
    ·ASP.NET状态存储管理...
    ·详解rs.Open sql,conn,...
    ·C# .net winform截屏、...
    ·用c#操作txt文本文件的...
    ·SQL语句实现Sql Server...
    ·在VB.net中如何把汉字...
    服务项目: 长沙短信群发,长沙办公自动化建设,长沙网站建设,长沙网页设计,长沙人事管理系统,长沙OA办公系统,长沙软件定制开发,长沙短信平台开发,长沙邮件系统,长沙IDC托管服务,长沙SEO优化,长沙短信群发,长沙短信群发平台,长沙短信平台,长沙短信公司,长沙短信群发公司,长沙短信群发服务公司,长沙短信群发,长沙短信群发平台,长沙短信群发公司,长沙短信群发服务公司,长沙短信群发服务,长沙短信公司,长沙短信群发服务平台,长沙短信群发服务中心,长沙短信群发中心,长沙办公自动化,长沙企业办公自动化,长沙电子政务,长沙OA,长沙客户关系管理系统,长沙社区管理系统
    友情链接: 长沙短信平台    长沙短信群发    长沙短信群发平台    长沙短信群发公司    芙蓉区东岸乡锦林社区网    湖南数据中心    
     

    在线咨询QQ:21543821 点击这里给我发消息、895078010 点击这里给我发消息、183932503 点击这里给我发消息
    Copyrigh ® 2006-2008 长沙软智科技有限公司 版权所有       技术支持:长沙软智科技有限公司软件开发部
    地址:长沙市芙蓉区火车站凯通国际二栋三单元(天心电脑城南边)
    联系人:雷经理 电话:0731-84454366  手机:13873166650
    邮箱:ruanzhitech@126.com      湘ICP备:08103883号