zoukankan      html  css  js  c++  java
  • 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:UsersAdministratorDesktop书名总价格计算.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[] { ' ', '	' }, 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[] { ' ', '	' }, 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:UsersAdministratorDesktop书名总价格计算结果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 }

  • 相关阅读:
    蜘蛛修网
    推荐10款用户界面设计
    18个web开发人员必备的Chrome扩展
    分享一个帮助你在线测试响应式设计的web工具 Screenqueri.es
    推荐16款每周设计灵感
    分享一个帮助你快速构建HTML5游戏的javascript类库 CreateJS
    5个jQuery的备选轻量级移动客户端开发(Mobile development)类库
    帮助你高效开发Ajax应用的超酷jQuery插件 AjaxML
    免费资源:350个超棒标志性字符图标
    免费素材下载:超酷的简单按钮UI
  • 原文地址:https://www.cnblogs.com/zhubinglong/p/5818830.html
Copyright © 2011-2022 走看看