A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© /fendou 中级黑马   /  2014-5-15 17:13  /  1229 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 /fendou 于 2014-5-21 11:41 编辑

有一个10M的文件,由于内存有限,程序每次最多处理2M的数据,如何实现?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

5 个回复

倒序浏览
   FileStream fs = new FileStream(name, FileMode.CreateNew);
            
            //转换为字节 写入数据(可写入中文)
            Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
            //字节数组,字节偏移量,最多写入的字节数
            fs.Write(info, 0, info.Length);
            //w.Close();
            fs.Close();
            //打开文件
            fs = new FileStream(name, FileMode.Open, FileAccess.Read);
            //读取
            BinaryReader r = new BinaryReader(fs);
            for (int i = 0; i < 11; i++)
            {
                Console.WriteLine(r.ReadInt32());
            }
            //w.Close();
            fs.Close();

要控制大小  就是修改 每次读写的 大小即可

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
文件是这种格式的
1        1330000        广西 南宁        电信CDMA卡        0771        530000
3        1330002        重庆 重庆        电信CDMA卡        023        404100
4        1330003        重庆 重庆        电信CDMA卡        023        404100
11        1330010        北京 北京        电信CDMA卡        010        100000
12        1330011        北京 北京        电信CDMA卡        010        100000
19        1330018        上海 上海        电信CDMA卡        021        200000
20        1330019        上海 上海        电信CDMA卡        021        200000
34        1330033        天津 天津        电信CDMA卡        022        300000
35        1330034        天津 天津        电信CDMA卡        022        300000
51        1330050        上海 上海        上海电信CDMA卡        021        200000
52        1330051        上海 上海        上海电信CDMA卡        021        200000
53        1330052        上海 上海        上海电信CDMA卡        021        200000
54        1330053        上海 上海        上海电信CDMA卡        021        200000
55        1330054        上海 上海        上海电信CDMA卡        021        200000
64        1330063        上海 上海        上海电信CDMA卡        021        200000
65        1330064        上海 上海        上海电信CDMA卡        021        200000
67        1330066        上海 上海        上海电信CDMA卡        021        200000
81        1330080        上海 上海        上海电信CDMA卡        021        200000
82        1330081        上海 上海        上海电信CDMA卡        021        200000
83        1330082        上海 上海        上海电信CDMA卡        021        200000
84        1330083        上海 上海        上海电信CDMA卡        021        200000
85        1330084        上海 上海        上海电信CDMA卡        021        200000
86        1330085        上海 上海        上海电信CDMA卡        021        200000
87        1330086        上海 上海        上海电信CDMA卡        021        200000
88        1330087        上海 上海        上海电信CDMA卡        021        200000
89        1330088        上海 上海        上海电信CDMA卡        021        200000
90        1330089        上海 上海        上海电信CDMA卡        021        200000
99        1330098        上海 上海        上海电信CDMA卡        021        200000
101        1330100        北京 北京        电信CDMA卡        010        100000
102        1330101        北京 北京        电信CDMA卡        010        100000
103        1330102        北京 北京        电信CDMA卡        010        100000
104        1330103        北京 北京        电信CDMA卡        010        100000
105        1330104        北京 北京        电信CDMA卡        010        100000

如何保证每次读取的都正确呢?
回复 使用道具 举报
如果 是这样的 数据  就用   一行一行读
回复 使用道具 举报
/fendou 发表于 2014-5-15 17:31
文件是这种格式的
1        1330000        广西 南宁        电信CDMA卡        0771        530000
3        1330002        重庆 重庆        电信CDMA卡        023        40410 ...

try
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                String line;
                // Read and display lines from the file until the end of
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
    }


回复 使用道具 举报
【如果  问题 搞定  麻烦 把帖子 修改为  提问结束吧   】
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马