C# 流

文件流

FileStream 构造方法

public FileStream(string path, FileMode mode);
public FileStream(string path, FileMode mode, FileAccess access);

// path => 文件的路径
/* mode => {
	Open,
	OpenOrCreate
}
*/
/* access => {
	Read,
	Write,
	ReadWrite
}
*/

fs.Seek(8, SeekOrigin.Begin); // 文件开始向后8个字节
fs.Seek(2, SeekOrigin.Current); // 文件当前位置向后2个字节
fs.Seek(-5, SeekOrigin.End); // 文件末尾向前五个字节

fs.Read(buf, 2, 10); // 向buf字节数组偏移2b处读取fs中10字节数据
fs.ReadByte(); // 读取一个字节

fs.Write(buf, 2, 10); // 向文件偏移2b处写入buf数据
fs.WriteByte() // 写一个字节
二进制读取流

BinaryReader 构造方法

public BinaryReader(Stream input);
public BinaryReader(Stream input, Encoding encoding);

示例

FileStream fs = new FileStream("xxx", FileMode.Open);
BinaryReader br = new BinaryReader(fs);

一些方法

br.ReadString(); // 
br.ReadDouble(); //
br.ReadInt32(); //
br.ReadChar(); //
// ... 类似

需要关闭

br.Close();
二进制写入流

BinaryReader 类似

方法的话只要 Write

FileStream fs = new FileStream("xxx", FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(xxx);
写入流
StreamWriter sw;
sw = new StreamWriter(p); // 文件路径
sw = new StreamWriter(fs); // 套接低级文件流
sw = new StreamWriter(p, append); // append = true 表示保留原有数据

sw.Write("hello"); // 写入hello
sw.WriteLine("hello world!") ; // 写入一行hello world
输出流
StreamReader sr;
sr = new StreamReader(p); // 文件路径
sr = new StreamReader(s); // 套接低级文件流

sr.Read(); // 读取返回下一个字符
sr.ReadLine(); // 读取一行
sr.ReadToEnd(); // 读到尾
格式化流
[Serializable]
public class User {
    public string Name {get; set;}
    [NonSerialized]
    public string Note {get; set;}
}

var user = new User();
user.Name = "huro";
user.Note = "hello world!";
var input = new FileStream("user.txt", FileMode.OpenOrCreate, FileAccess.Write);
var bf = new BinaryFormatter();
bf.Serialize(input, user);

var output = new FileStream("user.txt", FileMode.OpenOrCreate, FileAccess.Read);
var user = bf.Deserialize(output) as User;
Console.WriteLine(user.Note); // 没有值,因为class中标注了不能被序列化
监控文件
public static void Watch() {
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = "D:\\";
    watcher.NotifyFilter = NotifyFilters.LastAccess;
    watcher.Filter = "*.txt";
    watcher.Changed += new FileSystemEventHandler(onChanged);
    watcher.Created += ...;
    watcher.Deleted += ...;
    watcher.Renamed += ...;
    watcher.EnableRaisingEvents = true;
}
public static void OnChanged(object sender, FileSystemEventArgs e){}
public static void OnRenamed(object sender, FileSystemEventArgs e){}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值