while ((input = sr.ReadLine()) != null){XXX}读txt,会卡死,求助

问题描述

while((input=sr.ReadLine())!=null){string[]ReadText=input.Replace("","@").Split('@');Global.text.Add(ReadText[0]);Global.text.Add(ReadText[1]);Global.text.Add(ReadText[2]);Global.text.Add(ReadText[3]);Global.text.Add(ReadText[4]);Global.text.Add(ReadText[5]);Global.text.Add(ReadText[6]);Global.text.Add(ReadText[7]);Global.Datalong++;}代码如上,用这个方法读txt文本,sr是StreamReader,Global.text.是个Arraylist(Global是我自己做的一个class,定义Arraylist的),说白了就是把txt里面的内容存到Arraylist中。读取功能没问题,行数少的文本读起来没问题,但是一旦用来读2MB左右大小的txt就会在while里面卡死,基本上在五六百行的时候就卡死了,不会报错,只是卡住了,求个解决方法。

解决方案

解决方案二:
卡住是哪一行呢,感觉不太像
解决方案三:
引用1楼tcmakebest的回复:

卡住是哪一行呢,感觉不太像

貌似是数据量太大了,我把代码改成了这样:string[]ReadText;ReadText=(sr.ReadToEnd()).Replace("","@").Split('@');Global.text.Add(ReadText);这回是运行到sr.ReadToEnd()的时候卡死了,不会报错但是卡住了不运行,我在监视里看到这个sr.ReadToEnd()提示了:函数求值超时bababa。。。。我怀疑是因为数据量太大了sr.ReadToEnd()处理不了,哪怕是一行一行的读txt文件,读到五六百行不一定哪行就开始卡机,但是cpu的占用率也没见增长。但是电脑的内存俩3.48G呢,读个2.33M的文件就卡机也不太可能,唉,搞不懂
解决方案四:
2.33M应该不会吧,把你的文件共享下,我试一试。
解决方案五:
先这样试:1.读取文件直接丢弃,不要放到Global.text中,看卡不卡2.做个for循环往Global.text中add数据,看卡不卡先确定到底是读文件的问题还是你自己的类有问题
解决方案六:
Global是一个静态类?
解决方案七:
直接readalllines就行了...何必一行一行的读...
解决方案八:
引用6楼diaodiaop的回复:

直接readalllines就行了...何必一行一行的读...

+10086
解决方案九:
感觉是你Global类的问题,把相关代码注释掉,单纯跑ReadLine试试还会卡吗。
解决方案十:
引用8楼sjyforg的回复:

感觉是你Global类的问题,把相关代码注释掉,单纯跑ReadLine试试还会卡吗。

会卡的,ReadLine五六百行的时候卡死,其实本来一行一行的读不会卡的,加了Arraylist之后才会出现ReadLine读取卡住的问题,我也去网上看了很多帖子和解决方法,我这个应该是数据量较大造成的,最好的解决方法是用分块读取的方法解决,但是分块读取的话我处理数据就不好处理了,所以干脆放弃了Arraylist,把数据用ReadLine拿出来后直接用。
解决方案十一:
引用7楼wawd74520的回复:

Quote: 引用6楼diaodiaop的回复:
直接readalllines就行了...何必一行一行的读...

+10086

hehe
解决方案十二:
引用6楼diaodiaop的回复:

直接readalllines就行了...何必一行一行的读...

试过卡死了
解决方案十三:
引用11楼baidu_17673305的回复:

Quote: 引用6楼diaodiaop的回复:
直接readalllines就行了...何必一行一行的读...

试过卡死了

虽然ReadAllLines用内存用的比流方式多,但2.33M真不是问题,这都卡死的话我甚至怀疑你的硬盘(光盘?)有坏道==
解决方案十四:
引用12楼phommy的回复:

Quote: 引用11楼baidu_17673305的回复:
Quote: 引用6楼diaodiaop的回复:
直接readalllines就行了...何必一行一行的读...

试过卡死了

虽然ReadAllLines用内存用的比流方式多,但2.33M真不是问题,这都卡死的话我甚至怀疑你的硬盘(光盘?)有坏道==

这个可能性不大,新戴尔,挺给力的,打个使命召唤啊,鬼泣啊,极品飞车啊,效果都不错的说,速度也杠杠的
解决方案十五:
我也遇到了这个问题,我是卡在355行上,就不循环了,跟电脑没关系,我同事的电脑跑这段代码一样的问题,也是355行卡住
解决方案:
作为程序员,必须学会自己调试查找问题。你说的卡死是指代码运行到某次就执行不下去了?首先,确认问题是否是必现的?还是在读某一个文件时必现?可以尝试删除循环体内部的代码,看下是否会卡住。如果没有,就添加string[]ReadText=input.Replace("","@").Split('@');再看时候会卡住。首先,你要定位问题,明确问题。而不是出现问题了,却只能模糊的描述。你是写代码的人,更是测试出问题的人,如果你自己都不清楚,又如何指望别人能清楚呢。
解决方案:
别说2M几十G的文本我都这样读了也没见出什么问题来。。。。就你上面的代码根本就看不出有什么问题来没有上下文和有问题的环境根本就没法知道问题在哪里
解决方案:
引用14楼jiao_zg的回复:

我也遇到了这个问题,我是卡在355行上,就不循环了,跟电脑没关系,我同事的电脑跑这段代码一样的问题,也是355行卡住

试试自己写一个简单的txt比如每一行都是1111之类的不应该读几百行就卡死啊
解决方案:
楼主先确定一下是read的时候卡了还是add的时候卡了吧如果是read卡了,换一个txt看看是否一样会卡在同一行如果是add卡了,没一行少add一个,看看是否会卡在同一行先把问题定位出来
解决方案:
引用18楼u012948520的回复:

楼主先确定一下是read的时候卡了还是add的时候卡了吧如果是read卡了,换一个txt看看是否一样会卡在同一行如果是add卡了,没一行少add一个,看看是否会卡在同一行先把问题定位出来

谢谢,刚定位出来了,是org.apache.commons.net.ftp这个包下的FTPClient文件的一个bug,命名设置了buffersize,但是实际的实现却是从Util这个类里面取的一个final值,所以设置的不起作用了。
解决方案:
引用19楼jiao_zg的回复:

Quote: 引用18楼u012948520的回复:
楼主先确定一下是read的时候卡了还是add的时候卡了吧如果是read卡了,换一个txt看看是否一样会卡在同一行如果是add卡了,没一行少add一个,看看是否会卡在同一行先把问题定位出来

谢谢,刚定位出来了,是org.apache.commons.net.ftp这个包下的FTPClient文件的一个bug,命名设置了buffersize,但是实际的实现却是从Util这个类里面取的一个final值,所以设置的不起作用了。

我写了下解决方法,http://blog.csdn.net/jiao_zg/article/details/51480099不知道还有没有其他的问题。。。先试试吧,反正是能读取了
解决方案:
http://blog.csdn.net/jiao_zg/article/details/51480099楼主看下是不是我的这个问题吧
解决方案:
新人来学习了。

时间: 2024-11-30 10:43:05

while ((input = sr.ReadLine()) != null){XXX}读txt,会卡死,求助的相关文章

在网上找一段读TXT文件的代码,有一处不明白,请高手解答

问题描述 StreamReadersr=newStreamReader("TestFile.txt"):Stringline;while((line=sr.ReadLine())!=null){textBox1.Text+=ii.ToString()+"-"+line.ToString()+"/r/n";}ii是什么意思呢,这么写语法对不 解决方案 解决方案二:呃不知道那个ii是什么东西不过在我的印象中读取文本没这么复杂吧StreamReader

c语言程序读txt文本,有程序没有文本,如何根据程序写文本?谢谢

问题描述 c语言程序读txt文本,有程序没有文本,如何根据程序写文本?谢谢 struct jd { int num,s; double p,q,S,e,f,U,zkj,dp,dq,du,de,df; } jd[M]; struct zhl { int numb; int p1,p2; double r,x; } zhl[M]; FILE *fp1,*fp2; /* 读取数据 / void data() { int h,number; fp1=fopen("input.txt",&quo

c-C 语言 按行读txt,存储到数组并查询

问题描述 C 语言 按行读txt,存储到数组并查询 txt如下: ZQ112101 刘诚明 ZQ112102 刘磊 ZQ112103 刘义峥 ZQ112104 朱冠虞 ZQ112105 朱志阳 ZQ112106 樊颖卿 ZQ112107 刘玮 ZQ112108 朱美青 ZQ112109 朱翔 ZQ112110 朱信 ZQ112111 朱永楼 array[1] 希望能够返回 ZQ112101 解决方案 下边提供的源码供参考,linux试验通过了,希望对你能有帮助. //源码文件 student_m

java-【求助】怎么用Java读txt文件,根据其中的条件,输出一个csv文件?(具体情况见内容)

问题描述 [求助]怎么用Java读txt文件,根据其中的条件,输出一个csv文件?(具体情况见内容) 用Java, 读txt文件(根据Eclipse软件的下方的console改成的log.txt) -------------------------------------- 例: [2013-08-26 10:45:45,042] ERROR does not exist. [2013-08-26 14:43:09,145] ERROR Certification failed. [2013-0

MFC读txt数据时,数据出错

问题描述 MFC读txt数据时,数据出错 我用mfc写了一个程序用于读取数据进行一元线性回归计算,读进来的数据总会莫名其妙的出问题,比如数据是12.34,读进来就会变成12.33999999999999999或者12.340000000000001,求各路大神帮忙看看是什么回事 解决方案 你有考虑过精度问题吗? 解决方案二: 浮点数在计算机中无法精确存储,只是无限接近这个数而已比如你存储12.34也只是存储一个无限接近12.34的值(比如12.339999....)所以我们比较浮点数的时候会设置

c#读txt文件 分割拼接问题,

问题描述 c#读txt文件 分割拼接问题, caozhy老师,发了,帮我看看,我估计循环哪里逻辑不清,多谢了 或者您哪里有什么好的方法 还有一种情况是某行最后那一列被分成了两行, 多谢了 解决方案 你的文件发在什么地方了??? 解决方案二: c#读txt文件中文乱码问题C#中读取txt文件中的中文时出现乱码问题c# 操作txt文件 解决方案三: caozhy老师 这里http://pan.baidu.com/s/1slzfWCl

c语言-C语言用fdets读txt然后fputs写入html格式文件,浏览器打开乱码,用记事本看html源代码却显示正常,为什么?

问题描述 C语言用fdets读txt然后fputs写入html格式文件,浏览器打开乱码,用记事本看html源代码却显示正常,为什么? 解决方案 编码格式不统一,浏览器默认编码不一致. 解决方案二: 可能是UTF8格式的吧,那要转码的 解决方案三: 浏览器还涉及一个编码的问题,你的是不是写入编码为utf-8了?要添加meta制定charset为utf-8 <meta http-equiv="Content-Type" content="text/html; charset

求一段qt代码,用qcustomPlot读txt文件描点绘数据,求各位大神!

问题描述 求一段qt代码,用qcustomPlot读txt文件描点绘数据,求各位大神! 就下面的一段.txt的数据,第一列是时间做横坐标,分别用第二列第三列的数据画曲线,求各位大神施舍代码呀! m:ss:mmm 2 3 0:00.000 -0.145 -0.065 0:00.003 -0.145 -0.065 0:00.006 -0.145 -0.065 0:00.008 -0.145 -0.065 0:00.011 -0.145 -0.065 0:00.014 -0.145 -0.065 0:

[20171031]rman xxx Failure.txt

[20171031]rman xxx Failure.txt --//简单测试 List Failure, Advise Failure and Repair Failure命令在11g下,也许以后工作需要. --//虽然我自己很少使用这个命令,感觉这个有点傻瓜化. 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ ----