用StreamReader类的readline()方法当行数多的时候,出现数据丢失怎么办? 5

我读一个文本文件,比如说读30行没问题,当变成31行的时候第一行的东西就丢了。publicstaticList<string>creatStringListByFile(... 我读一个文本文件,比如说读30行没问题,当变成31行的时候第一行的东西就丢了。
public static List<string> creatStringListByFile(string filepath)
{

FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
string content = "";
StringBuilder contents =new StringBuilder();
content = sr.ReadLine();
while (content != null)
{

contents .Append(content);
contents.Append(" ");
content = sr.ReadLine();

}

List<string> tokenstringlist = new List<string>();

tokenstringlist.AddRange(contents.ToString().Trim().Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
fs.Close();
sr.Close();
return tokenstringlist;
}
谁能试一下一个300行的准出错
展开
 我来答
darko2o8
2009-11-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

先占个楼.. 我试试 

同学 我是对的- -|

我的环境是.net2.0

代码复制你的

如下

        static void Main(string[] args)

        {

            List<string> list = creatStringListByFile("C:\\a.txt");

            int i = 1;

            foreach (string item in list)

            {

                Console.WriteLine((i++) + "\t" + item);

            }

        }

        public static List<string> creatStringListByFile(string filepath)

        {

            FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);

            StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

            string content = "";

            StringBuilder contents = new StringBuilder();

            content = sr.ReadLine();

            while (content != null)

            {

                contents.Append(content);

                contents.Append(" ");

                content = sr.ReadLine();

            }

            List<string> tokenstringlist = new List<string>();

            tokenstringlist.AddRange(contents.ToString().Trim().Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));

            fs.Close();

            sr.Close();

            return tokenstringlist;

        }

a.txt文件如下:

1111111111111

22222222222

3333333333

444444444

5555555555555

666666666

77777777

8888888888

1111111111111

22222222222

3333333333

444444444

5555555555555

666666666

77777777

8888888888

1111111111111

22222222222

3333333333

444444444

5555555555555

666666666

77777777

8888888888

1111111111111

22222222222

3333333333

444444444

5555555555555

666666666

77777777

8888888888

1111111111111

22222222222

3333333333

444444444

5555555555555

666666666

77777777

8888888888

读取的数据如下: 看图片 

已测试 300没问题,3000没问题,30000也没问题.

du
2009-11-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
不会阿,你可以试着向控制台输出看看是什么情况,你可能是开始时把行写死了,把代码贴上来看看

int counter = 0;
string line;

// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader(@"c:\zhidao.txt",System.Text.Encoding.Default);
while ((line = file.ReadLine()) != null)
{
System.Console.WriteLine(line);
counter++;
}

file.Close();
System.Console.WriteLine("There were {0} lines.", counter);
// Suspend the screen.
System.Console.ReadLine();
我在控制台试了试,读取c盘下的一个zhidao.txt文件并统计出行数
按行读取文本文件,这样就行了,不太明白你写的那个泛型是什么意思
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongrenfei21
2009-11-17
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
那说明只能读30行。你可以每隔30行,重新读入。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式