FileStream读写文件【StreamWriter 和 StreamReader】
FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行.
其中创建FileStream对象最简单的构造函数如下:
FileStream file = new FileStream(fileName,FileMode.Member);2
FileStream file = new FileStream(fileName, FileMode.Member, FileAccess.Member);|
成 员 |
说 明 |
|
Read |
打开文件,用于只读 |
|
Write |
打开文件,用于只写 |
|
ReadWrite |
打开文件,用于读写 |
对文件进行不是FileAccess枚举成员指定的操作会导致抛出异常。此属性的作用是,基于用户的身份验证级别改变用户对文件的访问权限。
在FileStream构造函数不使用FileAccess枚举参数的版本中,使用默认值FileAccess. ReadWrite。
FileMode枚举成员,使用每个值会发生什么,取决于指定的文件名是否表示已有的文件。
|
成 员 |
文 件 存 在 |
文件不存在 |
|
Append |
打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用 |
创建一个新文件。只能与枚举FileAccess.Write联合使用 |
|
Create |
删除该文件,然后创建新文件 |
创建新文件 |
|
CreateNew |
抛出异常 |
创建新文件 |
|
Open |
打开现有的文件,流指向文件的开头 |
抛出异常 |
|
OpenOrCreate |
打开文件,流指向文件的开头 |
创建新文件 |
|
Truncate |
打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期 |
抛出异常 |
FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据
StreamWriter允许将字符和字符串写入文件,它处理底层的转换,向FileStream对象写入数据。StreamReader也类似。
实例:
using System;2
using System.Data;3
using System.IO;4
using System.Text;5

6
/// <summary>7
/// Summary description for FileReadAndWrite8
/// </summary>9
public class FileReadAndWrite10
{11
public FileReadAndWrite()12
{13
//14
// TODO: Add constructor logic here15
//16
}17
/// <summary>18
/// 用FileStream写文件19
/// </summary>20
/// <param name="str"></param>21
/// <returns></returns>22
public void FileStreamWriteFile(string str)23
{24
byte[] byData;25
char[] charData;26
try27
{28
FileStream nFile = new FileStream("love.txt", FileMode.Create);29
//获得字符数组30
charData = str.ToCharArray();31
//初始化字节数组32
byData = new byte[charData.Length];33
//将字符数组转换为正确的字节格式34
Encoder enc = Encoding.UTF8.GetEncoder();35
enc.GetBytes(charData, 0, charData.Length,byData,0,true);36
nFile.Seek(0, SeekOrigin.Begin);37
nFile.Write(byData, 0, byData.Length);38
}39
catch (Exception ex)40
{41
throw ex;42
}43
}44
/// <summary>45
/// FileStream读取文件46
/// </summary>47
/// <param name="filePath"></param>48
/// <returns></returns>49
public string FileStreamReadFile(string filePath)50
{51
byte[] data = new byte[100];52
char[] charData = new char[100];53
try54
{55
FileStream file = new FileStream(filePath, FileMode.Open);56
//文件指针指向0位置57
file.Seek(0, SeekOrigin.Begin);58
//读入两百个字节59
file.Read(data, 0, 200);60
//提取字节数组61
Decoder dec = Encoding.UTF8.GetDecoder();62
dec.GetChars(data, 0, data.Length, charData, 0);63
}64
catch (Exception ex)65
{66
throw ex;67
}68
return Convert.ToString(charData);69
}70
/// <summary>71
/// StreamWriter写文件72
/// </summary>73
public void StreamWriterWriteFile()74
{75
try76
{77
FileStream nFile = new FileStream("love.txt", FileMode.CreateNew);78
StreamWriter writer = new StreamWriter(nFile);79

80
writer.WriteLine("I love You!");81
writer.WriteLine("Do you love me!");82
writer.Close();83
}84
catch85
{ }86
}87
/// <summary>88
/// StreamReader读取文件89
/// </summary>90
/// <returns></returns>91
public string StreamReaderReadFile()92
{93
string str="";94
try95
{96
FileStream file = new FileStream("love.txt", FileMode.Open);97
StreamReader sr = new StreamReader(file);98
while (sr.ReadLine()!=null)99
{100
str += sr.ReadLine();101
}102
//或者str = sr.ReadToEnd();103
sr.Close();104
}105
catch106
{ }107
return str;108
}109
}110

FileStream读写文件【StreamWriter 和 StreamReader】的更多相关文章
- [转载]FileStream读写文件
FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...
- FileStream读写文件流
用FileStream 读取文件流并显示给文件内容 string p = @"C:\Users\Administrator\Desktop\1.txt"; FileStream f ...
- FileStream读写文件
读文件示例 try { // 打开文件 FileStream fs = new FileStream("D:\\not.txt", FileMode.Open, FileAcces ...
- C#读写文件总结
1.使用FileStream读写文件 文件头: using System; using System.Collections.Generic; using System.Text; using ...
- C# 之 读写文件
1.使用 FileStream 读写文件 添加命名空间引用: using System; using System.Collections.Generic; using System.Text; us ...
- C#文件与流(FileStream、StreamWriter 、StreamReader 、File、FileInfo、Directory、directoryInfo、Path、Encoding)
(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo.Path.Encoding) C#文 ...
- (整理)streamWriter、streamReader与FileStream
今天偶然使用VS代码分析,发现CA2000警告,然后其中一条为streamWriter.streamReader与FileStream相关内容,特查询并记录一下. 引文地址:http://bbs.cs ...
- C#常用IO流与读写文件
.文件系统 ()文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:Directory ...
- C#常用IO流与读写文件 (转)
源自https://www.cnblogs.com/liyangLife/p/4797583.html 谢谢 1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.Fil ...
随机推荐
- Github上的Watch和 Star的区别
Github 推出了新的 Notification 系统,更改了原有的 Watch 机制,为代码库增加了 Star 操作.Notification 将接收 Watching 代码库的动态,包括:* I ...
- IT这一行,如可高速下载国外资源之迅雷设置免费SSH代理下载国外资源
本文转自SUN'S BLOG 原文地址:IT这一行,如可高速下载国外资源之迅雷 我们这些做IT这一行的人,经常,下载一些国外的一些资源,可是让人蛋碎的是,往往这些资源下载都慢的像蜗牛,真的让人无法忍受 ...
- JQuery------分页插件下载地址
转载GitHub: https://github.com/pgkk/kkpager
- C3P0连接池配置和实现详解
一.配置 <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> ...
- 【辅助远程连接,可穿防火墙、NAT】一次 TeamViewer 的安装与测试
背景: 应课程老师要求帮助某化学老师维修机器(高性能电脑),并解决老师的若干问题,在解决硬件问题(上网问题:多个网络接口)之后,化学老师提出需要远程链接到该机器,试询问之前如何实现,化学老师推荐Tea ...
- ecshop随机分类
$get_categories_tree = get_categories_tree(); $smarty->assign('category_1', RandArray($get_catego ...
- OperateLoger
protected void Page_Load(object sender, EventArgs e) { OperateLoger.FunctionInfo =new FunctionInfo { ...
- psutil 模块
psutil.pids()查看单个进程p = psutil.Process(2423) p.name() #进程名p.exe() #进程的bin路径p.cwd() #进程的工作目录绝对 ...
- MyBatis传入多个参数的问题
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- java 解 poj 1000
import java.util.Scanner; public class A1000 { public static void main(String[] args) { Scanner sc=n ...