首页 新闻 赞助 找找看

C# 分割记事本问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-20 10:27

长话短说
需求:记事本超过指定大小(100M)就把原有的记事本文件分割成多个100M以内的文件

有简便方法的欢迎讨论
老套做法:判断大小后 用读取器读取到指定行数 然后用写入器写入指定行数以保证生成的每个记事本都是100M以内的 这种方法就不用说了 这个是最后没办法了再用

我觉得应该是有现成的方法 或者类库可以用的,恳请大侠们告知,many tks!

问题补充:

最终还是老套做法解决的:

foreach遍历给定路径里的所有记事本文件,不论大小就开始读取,遇到超过70W行(100M左右) 每70W的倍数就进else先批量插入(BULK),没到70W行的就进下面的批量插入【未贴出代码,跟else里的一样】

                            if (totalCount % 700000 != 0)
                            {
                                dt.Rows.Add(row);
                            }
                            else
                            {
                                //超过70w行的就分批插入 否则一直追加到dataTable中 会内存溢出
                                SqlConnection conns = new SqlConnection(DBHelper.connStr);
                                SqlBulkCopy bulks = new SqlBulkCopy(conns);

                                conns.Open();
                                bulks.BatchSize = dt.Rows.Count;
                                bulks.DestinationTableName = "Data";
                                bulks.BulkCopyTimeout = 600;     //10分钟才超时(time out)
                                bulks.WriteToServer(dt);

                                bulks.Close();
                                conns.Close();

                                dt.Rows.Clear();     //清空dataTable 防止内存溢出
                                dt.Rows.Add(row);   //添加当前行 否则每次符合if条件的行就没了

                            }//else end
oppoic的主页 oppoic | 小虾三级 | 园豆:770
提问于:2012-11-19 10:38
< >
分享
最佳答案
0

百度 “TXT文件分割” 会有好多第三方软件,但是绝大多数软件的实现思路就是楼主说的那样,读取记事本内容,然后每几千行存一次生成新的文件。
参考实现的代码:

http://www.cnblogs.com/ttxs2010/archive/2010/11/24/txt.htm

收获园豆:10
acepro | 小虾三级 |园豆:1218 | 2012-11-19 10:54

不太可能先用三方软件遍历下我的记事本 然后再跑我的程序 不太实际

你贴的这个链接我完全没看明白,没没法直接用 还是感谢兄弟的热情回答

最终还是在我的程序里判断并切割的,最终实现方法看主贴的补充问题

oppoic | 园豆:770 (小虾三级) | 2012-11-20 10:23
其他回答(2)
0

读取记事本内容,然后每几千行存一次生成新的文件。基本是这样做的

收获园豆:4
jason2013 | 园豆:1998 (小虾三级) | 2012-11-19 11:49

同上

支持(0) 反对(0) oppoic | 园豆:770 (小虾三级) | 2012-11-20 10:26
0

留个位置学习,其实我也想知道如何不用“老套做法”来做。

收获园豆:2
只会造轮子 | 园豆:2274 (老鸟四级) | 2012-11-19 13:14

看看主帖吧 我觉得还可以,哈哈

支持(0) 反对(0) oppoic | 园豆:770 (小虾三级) | 2012-11-20 10:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册