C#中流写入类StreamWriter的介绍
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的介绍的更多相关文章
- android.hardware.Camera类及其标准接口介绍
android.hardware.Camera类及其标准接口介绍,API level 19 http://developer.android.com/reference/android/hardwar ...
- 微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同。
微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同. .NET Collection 函数库的 Has ...
- SpringBoot中Redis的set、map、list、value、实体类等基本操作介绍
今天给大家介绍一下SpringBoot中Redis的set.map.list.value等基本操作的具体使用方法 上一节中给大家介绍了如何在SpringBoot中搭建Redis缓存数据库,这一节就针对 ...
- c++string类的简单介绍
#include "iostream" #include "string" using namespace std; /*@author:浅滩 *family: ...
- 基于StringUtils工具类的常用方法介绍(必看篇)
前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅. isEmpty(String str) 是否为空,空格字符为false is ...
- 黄聪:C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用
Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...
- 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用
Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...
- 云计算仿真软件Cloudsim介绍以及类的功能介绍
一·云计算的介绍 云计算仿真软件,称为CloudSim.它是在离散事件模拟包SimJava上开发的函数库,可在Windows和Linux系统上跨平台运行,CloudSim继承了GridSim的编程模型 ...
- python类的简单介绍
类是面向对象编程的核心, 它扮演相关数据及逻辑的容器角色.它们提供了创建“真实”对象(也就是实例)的蓝图.因为Python 并不强求你以面向对象的方式编程(与Java 不同), 此刻你也可以不学习类. ...
随机推荐
- 我的offer之路(一)
目录 1.职业规划. 2.刷题. 3.看书. <剑指offer> <数据结构算法与应用:C++语言描述 > <Effective C++> <C与指针> ...
- 【线性基】bzoj2322: [BeiJing2011]梦想封印
线性基的思维题+图常见套路 Description 渐渐地,Magic Land上的人们对那座岛屿上的各种现象有了深入的了解. 为了分析一种奇特的称为梦想封印(Fantasy Seal)的特技,需要引 ...
- Linux - mkdir -p a/b/c
mkdir -p a/b/c -p 会循环创建
- Springboot @Autowired 无法注入问题
特别提醒:一定要注意文件结构 WebappApplication 一定要在包的最外层,否则Spring无法对所有的类进行托管,会造成@Autowired 无法注入. 1. 添加工具类获取在 Sprin ...
- matplotlib学习记录 六
# 绘制多数据条形图 # 假设你知道了列表a中电影分别在2017-09-14(b_14),2017-09-15(b_15), # 2017-09-16(b_16)三天的票房,为了展示列表中电影本身的票 ...
- 通过cookies信息模拟登陆
import requests # 这个练习演示的是通过传入cookie信息模拟登陆,这样操作的前提是需要预先在浏览器登陆账户抓包得到cookie字段信息 url = "http://www ...
- 使用TensorFlow的卷积神经网络识别手写数字(2)-训练篇
import numpy as np import tensorflow as tf import matplotlib import matplotlib.pyplot as plt import ...
- scanf(),gets(),getchar()
scanf()与gets()区别: scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用gets() ...
- hdu 6318
Long long ago, there was an integer sequence a.Tonyfang think this sequence is messy, so he will cou ...
- hdu 6301
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...