快速?要多快啊?得有个标准哦!
这个和机器的配置有关系!

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.IO;
    using System.Runtime.InteropServices;
    namespace log
    {
        class ReadBigTxt
        {        [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);        public const int GENERIC_READ = -2147483648; //0x80000000 
            public const int GENERIC_WRITE = 0x40000000;
            public const int GENERIC_EXECUTE = 0x20000000;
            public const int GENERIC_ALL = 0x10000000;
            public const int FILE_ATTRIBUTE_NORMAL = 0x80;
            public const int FILE_FLAG_SEQUENTIAL_SCAN = 0x8000000;
            public const int INVALID_HANDLE_VALUE = -1;        public const int PAGE_NOACCESS = 1;
            public const int PAGE_READONLY = 2;
            public const int PAGE_READWRITE = 4;        public const int FILE_MAP_COPY = 1;
            public const int FILE_MAP_WRITE = 2;
            public const int FILE_MAP_READ = 4;
            public string GetFileTxt(string filename)
            {
                string str = "";
                try
                {
                    IntPtr vFileHandle = CreateFile(filename, 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, "temp");
                        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[] nb = new byte[vSize];
                                Marshal.Copy(vHead, nb, 0, nb.Length);
                                str = System.Text.Encoding.GetEncoding("GB2312").GetString(nb);
                                nb = null;
                                UnmapViewOfFile(vHead);
                            }
                            CloseHandle(vMappingHandle);
                        }
                        CloseHandle(vFileHandle);
                    }
                }
                catch
                {
                    return "";
                }
                return str;        }
        }
    }