FileStream读写文件【StreamWriter 和 StreamReader】


FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行.
其中创建FileStream对象最简单的构造函数如下:
1FileStreamfile=newFileStream(fileName,FileMode.Member);
2FileStreamfile=newFileStream(fileName,FileMode.Member,FileAccess.Member);
而FileAccess的成员:

成 员

说 明

Read

打开文件,用于只读

Write

打开文件,用于只写

ReadWrite

打开文件,用于读写

对文件进行不是FileAccess枚举成员指定的操作会导致抛出异常。此属性的作用是,基于用户的身份验证级别改变用户对文件的访问权限。

在FileStream构造函数不使用FileAccess枚举参数的版本中,使用默认值FileAccess. ReadWrite。

FileMode枚举成员,使用每个值会发生什么,取决于指定的文件名是否表示已有的文件。

成 员

文 件 存 在

文件不存在

Append

打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用

创建一个新文件。只能与枚举FileAccess.Write联合使用

Create

删除该文件,然后创建新文件

创建新文件

CreateNew

抛出异常

创建新文件

Open

打开现有的文件,流指向文件的开头

抛出异常

OpenOrCreate

打开文件,流指向文件的开头

创建新文件

Truncate

打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期

抛出异常


FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据
StreamWriter允许将字符和字符串写入文件,它处理底层的转换,向FileStream对象写入数据。StreamReader也类似。

实例:
1usingSystem;
2usingSystem.Data;
3usingSystem.IO;
4usingSystem.Text;
5
6/**/
9publicclassFileReadAndWrite
10{
11publicFileReadAndWrite()
12{
13//
14//TODO:Addconstructorlogichere
15//
16}

17///<summary>
18///用FileStream写文件
19///</summary>
20///<paramname="str"></param>
21///<returns></returns>

22publicvoidFileStreamWriteFile(stringstr)
23{
24byte[]byData;
25char[]charData;
26try
27{
28FileStreamnFile=newFileStream("love.txt",FileMode.Create);
29//获得字符数组
30charData=str.ToCharArray();
31//初始化字节数组
32byData=newbyte[charData.Length];
33//将字符数组转换为正确的字节格式
34Encoderenc=Encoding.UTF8.GetEncoder();
35enc.GetBytes(charData,0,charData.Length,byData,0,true);
36nFile.Seek(0,SeekOrigin.Begin);
37nFile.Write(byData,0,byData.Length);
38}

39catch(Exceptionex)
40{
41throwex;
42}

43}

44///<summary>
45///FileStream读取文件
46///</summary>
47///<paramname="filePath"></param>
48///<returns></returns>

49publicstringFileStreamReadFile(stringfilePath)
50{
51byte[]data=newbyte[100];
52char[]charData=newchar[100];
53try
54{
55FileStreamfile=newFileStream(filePath,FileMode.Open);
56//文件指针指向0位置
57file.Seek(0,SeekOrigin.Begin);
58//读入两百个字节
59file.Read(data,0,200);
60//提取字节数组
61Decoderdec=Encoding.UTF8.GetDecoder();
62dec.GetChars(data,0,data.Length,charData,0);
63}

64catch(Exceptionex)
65{
66throwex;
67}

68returnConvert.ToString(charData);
69}

70///<summary>
71///StreamWriter写文件
72///</summary>

73publicvoidStreamWriterWriteFile()
74{
75try
76{
77FileStreamnFile=newFileStream("love.txt",FileMode.CreateNew);
78StreamWriterwriter=newStreamWriter(nFile);
79
80writer.WriteLine("IloveYou!");
81writer.WriteLine("Doyouloveme!");
82writer.Close();
83}

84catch
85{}
86}

87///<summary>
88///StreamReader读取文件
89///</summary>
90///<returns></returns>

91publicstringStreamReaderReadFile()
92{
93stringstr="";
94try
95{
96FileStreamfile=newFileStream("love.txt",FileMode.Open);
97StreamReadersr=newStreamReader(file);
98while(sr.ReadLine()!=null)
99{
100str+=sr.ReadLine();
101}

102//或者str=sr.ReadToEnd();
103sr.Close();
104}

105catch
106{}
107returnstr;
108}

109}

110

1..net中操作文件系统的类有,

File,Directory,FileInfo,DirectoryInfo,FileStream,StreamWriter,StreamRea

der等
2. File,Directory:提供静态方法,用于操作多文件或多目录,而非操作具体的

文件或目录
3. FileInfo,DirectoryInfo:提供实体方法,用于操作具体的文件或目录
4. FileStream:可以随机读写文件,操作的是字节或字节数组,常被Stream替代

,因为Stream操作的是字符,操作字符要比字节容易。
5. StreamWriter,StreamReader:提供对字符的操作。

优质内容筛选与推荐>>
1、入职公司半个月感悟
2、编码格式的声明
3、修改hostname不重启机器并生效
4、从visual studio 2012生成预处理代码&汇编码
5、net use命令详细解释


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn