Visual Studio 2012 Express是否限制读取大文件?

pha*_*han 1 c# visual-studio-2012

这是我的代码,用于读取文本文件,该文件恰好大于1GB并且是以管道分隔的:

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string strFilePath = @"C:\Users\Me\Desktop\123.txt";

        private void button1_Click(object sender, EventArgs e)
        {
            var arrRawData = File.ReadLines(strFilePath).Select(line => line.Split('|')).ToArray();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时出现此错误:

mscorlib.dll中发生"System.OutOfMemoryException"

我有16GB的RAM ......我做错了什么?

Han*_*ant 9

您的程序以32位模式运行.这将永远不允许读取超过650兆字节的数据,关于地址空间中可用的最大空洞.

Project + Properties,Build选项卡,取消选中"Prefer 32-bit"选项.

请注意,几乎所有解析文件数据的应用程序仍然不需要使用这么多内存.只需使用StreamReader类一次读取一行.