猪冰龙

导航

c#读取文本文档实践4-读入到list泛型集合计算后写入新文档

商品 数量 单价
英语 66 100
语文 66 80
数学 66 100
化学 66 40
物理 66 60

上面截图是要处理的文本文档内容,目的是计算出总价并加在最后一列。

 

这一篇与上一篇比较类似,目的相同,不同之处为读入到了list中,list泛型集合可以当作可变长数组使用。通过StreamReader创建一个流sr,然后通过一个while循环将读得的每行数据放入字符串类型的list中,之后对每个list分割,并返回一个字符串数组,这个字符串数组就可以通过转化为double来计算了,计算完成后可以通过放入sb中统一写入到文本文档中。

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 
 7 namespace 用list泛型集合操作文本文档
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             ////读取文本文档内容到list
14             string fileName = @"C:\Users\Administrator\Desktop\书名总价格计算.txt";
15             FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
16             List<string> list = new List<string>();
17             StreamReader sr = new StreamReader(fs, Encoding.Default);//以默认的解码方式
18             //使用StreamReader类来读取文件 
19             sr.BaseStream.Seek(0, SeekOrigin.Begin);
20             // 从数据流中读取每一行,直到文件的最后一行
21             string tmp = sr.ReadLine();
22             string[] strNew;
23             StringBuilder sb = new StringBuilder();//创建sb
24             int textLineCount = 0;
25             while (tmp != null)
26             {
27                 list.Add(tmp);
28                 tmp = sr.ReadLine();
29                 Console.WriteLine(list[textLineCount++]);
30                 if ((textLineCount - 1) != 0)
31                 {
32                     strNew = list[textLineCount - 1].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
33                     sb.Append(strNew[0].ToString() + " " + strNew[1].ToString() + " " + strNew[2].ToString() + " " + (Convert.ToDouble(strNew[1]) * Convert.ToDouble(strNew[2])).ToString() + System.Environment.NewLine);
34                 }
35                 else
36                 {
37                     //将list转换为字符串数组
38                     strNew = list[textLineCount - 1].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
39                     //将字符串数组写入sb
40                     sb.Append(strNew[0].ToString() + " " + strNew[1].ToString() + " " + strNew[2].ToString() + " 总价格" + System.Environment.NewLine);
41                 }
42 
43             }
44             //将sb输出到计算结果
45             File.WriteAllText(@"C:\Users\Administrator\Desktop\书名总价格计算结果2.txt", sb.ToString());
46             //查看文本文档共多少行
47             //Console.WriteLine(textLineCount);
48             //Console.WriteLine(list.Count );
49             //查看list[1]内容
50             Console.WriteLine(list[1]);
51 
52             //关闭此StreamReader对象 
53             sr.Close();
54             fs.Close();
55         }
56     }
57 }

posted on 2016-08-29 17:22  猪冰龙  阅读(995)  评论(0编辑  收藏  举报