C#中流写入类StreamWriter的介绍 (转)

应用FileStream类需要许多额外的数据类型转换工作,十分影响效率。使用StreamWriter类将提供更简单,更方便的操作方式。
   StreamWriter类允许直接将字符和字符串写入文件,一般不针对二进制数据。
类的结构:
public class StreamWriter:TextWriter :实现一个TextWriter,使其以一种特定的编码向流中写入字符。 StreamWriter旨在以一种特定的编码(默认使用UTF8Encoding)输出字符。
构建器:
public StreamWriter (Stream stream):用UTF-8编码及默认缓冲区大小,为指定的流初始化StreamWriter类的一个新实例。 参数stream(可用FileStream类实例代替)要写入的流。 --可利用FileStream更好的控制对文件的操作方式。
public StreamWriter ( string path ):使用默认编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter类的新实例。参数path要向其中写入的完整文件路径。path 可以是文件名。
public StreamWriter ( Stream stream, Encoding encoding ):用指定的编码及默认缓冲区大小,为指定的流初始化StreamWriter类的新实例。参数encoding指定要使用的字符编码。

public StreamWriter ( string path, bool append ):使用默认编码和缓冲区大小,为指定路径上的指定文件初始化StreamWriter类的新实例。如果该文件存在,则可以将其改写或向其追加。如果该文件不存在,则此构造函数将创建一个新文件。参数 path 指定要写入的完整文件路径。 append指定确定是否将数据追加到文件。如果该文件存在,并且 append 为 false,则该文件被改写。如果该文件存在,并且 append 为 true,则数据被追加到该文件中。否则,将创建新文件。 
属性
public virtual bool AutoFlush { get; set; }:获取或设置一个值,该值指示 StreamWriter 是否在每次调用 StreamWriter.Write之后,将其缓冲区刷新到基础流。 此属性值强制 StreamWriter 刷新其缓冲区时,为 true;否则,为 false。 
public virtual string NewLine { get; set; }:获取或设置由当前 TextWriter 使用的行结束符字符串。 默认行结束符字符串是回车符后接一个换行符(“\r\n”)。
方法:
public override void Close ():关闭当前的 StreamWriter 对象和基础流。 
public override void Flush ():清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。 注意:在写出数据后,必须使用此方法将缓冲中的数据写出到流对应的目标中。
public override void Write(string value):将字符串写入流,参数value 要写入流的字符串。如果value为空,则不写入任何内容。 
public virtual void Write ( string format, params Object[] arg ):使用与 String.Format 相同的语义写出格式化的字符串。参数format格式化字符串。 Arg指定要写入格式化字符串的对象数组。 
public virtual void WriteLine ():将行结束符写入文本流。默认行结束符是后跟换行符的回车符(“\r\n”),但使用 NewLine 属性可以更改此值。
public virtual void WriteLine ( string value ):将后跟行结束符的字符串写入文本流。 参数value指定要写入的字符串。如果 value 为 空引用(在 Visual Basic 中为 Nothing),则仅写入行结束字符。
public virtual void WriteLine ( string format, params Object[] arg ):使用与 Format 相同的语义写出格式化的字符串和一个新行。参数format 格式化字符串。 Arg指定要写入格式化字符串的对象数组。 
范例:
using System;
using System.IO;
using System.Text;
class TestRW
{
    public static void Main(String[] args)
    {
        if (File.Exists(@"c:\MyFile.txt"))
        {
            using (FileStream fs = new FileStream(@"c:\MyFile.txt", FileMode.Append, FileAccess.Write))
            {
                fs.Lock(0, fs.Length);
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine("我是最好的,虽然现在不是");
                sw.WriteLine("有信息,不一定会赢,但没有信心,肯定会输");
                sw.WriteLine("我的期待月薪为{0,9:C4},实现年龄为{1,9},成功率{2,9:P2}", new Object[] { 20000, 30, 1 });
                fs.Unlock(0, fs.Length);//一定要用在Flush()方法以前,否则抛出异常。
                sw.Flush();
            }
        }
        else
        {
            Console.WriteLine("文件不存在");
        }
    }
}

string html = "@006|销售代表|4010200@008|客户代表|4010200@011";
      string[] list = html.ToLower().Split('|');
      string result = "";
      for (int i = 0; i < list.Length; i++)
      {
          if (list.Trim().Contains("@") || list.Trim().Contains("其他"))
          {
 
          }
          else
          {
              result += list.Trim() + "\r\n";
          }
      }
      StreamWriter sw = new StreamWriter("D:\\abc.xls", false, System.Text.Encoding.UTF8);
      sw.WriteLine(result);
      sw.Close();

C#中流写入类StreamWriter的介绍的更多相关文章

  1. android.hardware.Camera类及其标准接口介绍

    android.hardware.Camera类及其标准接口介绍,API level 19 http://developer.android.com/reference/android/hardwar ...

  2. 微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同。

    微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同. .NET Collection 函数库的 Has ...

  3. SpringBoot中Redis的set、map、list、value、实体类等基本操作介绍

    今天给大家介绍一下SpringBoot中Redis的set.map.list.value等基本操作的具体使用方法 上一节中给大家介绍了如何在SpringBoot中搭建Redis缓存数据库,这一节就针对 ...

  4. c++string类的简单介绍

    #include "iostream" #include "string" using namespace std; /*@author:浅滩 *family: ...

  5. 基于StringUtils工具类的常用方法介绍(必看篇)

    前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅. isEmpty(String str) 是否为空,空格字符为false is ...

  6. 黄聪:C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  7. 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  8. 云计算仿真软件Cloudsim介绍以及类的功能介绍

    一·云计算的介绍 云计算仿真软件,称为CloudSim.它是在离散事件模拟包SimJava上开发的函数库,可在Windows和Linux系统上跨平台运行,CloudSim继承了GridSim的编程模型 ...

  9. python类的简单介绍

    类是面向对象编程的核心, 它扮演相关数据及逻辑的容器角色.它们提供了创建“真实”对象(也就是实例)的蓝图.因为Python 并不强求你以面向对象的方式编程(与Java 不同), 此刻你也可以不学习类. ...

随机推荐

  1. NOIP2013 表达式求值

    题目描述 Description 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入描述 Input Description 输入仅有一行,为需要你计算的表达式,表达式中只包含数字. ...

  2. Vue实例和生命周期

    创建一个Vue实例 每个Vue应用都是通过Vue函数创建一个新的Vue实例开始: var vm = new Vue({ //选项 }) 数据与方法 当一个Vue实例被创建时,它向Vue的响应式系统中加 ...

  3. 代理工具--fiddle

    正则匹配 1)前缀为“EXACT:”表示完全匹配:只有match=rules时,才匹配 2)无前缀表示基本搜索,表示搜索到字符串就匹配:只要match中包含了rules的字符串,即可 3)前缀为“NO ...

  4. 为什么要用 ORM? 和 JDBC 有何不一样?

    orm是一种思想,就是把object转变成数据库中的记录,或者把数据库中的记录转变objecdt,我们可以用jdbc来实现这种思想,其实,如果我们的项目是严格按照oop方式编写的话,我们的jdbc程序 ...

  5. Cheese Aizu - 0558 (搜索题)

    Time limit8000 ms Memory limit131072 kB チーズ () 問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から顔を出した.JOI 町は東西南北に ...

  6. vagrant 安装ubuntu12.04 64 bit

    1 下载用于ubuntu 12.04 用于vagrant的镜像,虚拟机是virtualbox $ wget http://files.vagrantup.com/precise64.box jb@e3 ...

  7. 在spring boot中使用webSocket组件(二)

    该篇演示如何使用websocket创建一对一的聊天室,废话不多说,我们马上开始! 一.首先先创建前端页面,代码如下图所示: 1.login.html <!DOCTYPE html> < ...

  8. HDU 5396 区间DP 数学 Expression

    题意:有n个数字,n-1个运算符,每个运算符的顺序可以任意,因此一共有 (n - 1)! 种运算顺序,得到 (n - 1)! 个运算结果,然后求这些运算结果之和 MOD 1e9+7. 分析: 类比最优 ...

  9. POJ 2763 树链剖分 线段树 Housewife Wind

    单个边的权值修改以及询问路径上的权值之和. 数据量比较大,用vector存图会超时的. #include <iostream> #include <cstdio> #inclu ...

  10. git 强制回到以前版本

    git reset dfd3e36a641340a0b86f811df869c4375fabeff2 --hard