1.文件流
使用FileStream读文件
static void Main(string[] args) { using (FileStream fsRead=new FileStream("1.txt", FileMode.Open, FileAccess.Read))//使用using对实现IDisposable接口的类进行资源的释放 { byte[]bytes=new byte[fsRead.Length]; fsRead.Read(bytes, 0, bytes.Length); string str = System.Text.Encoding.Default.GetString(bytes); Console.WriteLine(str); } Console.ReadKey(); }
使用FileStream写文件
using (FileStream fsWrite = new FileStream("1.txt", FileMode.OpenOrCreate, FileAccess.Write)) { string str="哈哈"; byte[]bytes=System.Text.Encoding.UTF8.GetBytes(str); fsWrite.Write(bytes, 0, bytes.Length); } Console.WriteLine("写入成功了"); Console.ReadKey();
StreamReader与StreamWriter简化了文本类型的流的读取,ReadToEnd用于从当前位置一直读到最后,内容大的话会占内存;ReadLine读取一行,如果到了末尾,则返回null
2对象序列化与反序列化
对象序列化是将对象(比如Person对象)转换为二进制数据(字节流),反序列化是将二进制数据还原为对象。对象序列化,只能针对对象的字段进行序列化。在类声明上添加[Serializable],对象的属性、字段的类型也必须可序列化
为什么要用序列化:将一个复杂的对象转换流,方便我们的存储与信息交换。
序列化代码:
class Program { static void Main(string[] args) { Person per = new Person(); per.Name = "张三"; per.Age = 18; per.Gender = '男'; //第一步 创建序列化器 BinaryFormatter bf = new BinaryFormatter(); //第二步:创建流 using (FileStream fs = new FileStream("1.txt", FileMode.Create, FileAccess.Write)) { //第三步:序列化 bf.Serialize(fs, per); } Console.WriteLine("成功了"); Console.ReadKey(); } } [Serializable]//这个类可以被序列化了 public class Person { private string _name public string Name { get{ return _name; } set { _name = value; } } private char _gender; public char Gender { get { return _gender; } set { _gender = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } }
反序列化代码:
static void Main(string[] args) { //反序列化 //对象变 数据 数据变对象 //第一步 创建序列化器 BinaryFormatter bf = new BinaryFormatter(); //第二步:创建流 using (FileStream fs = new FileStream("11.txt", FileMode.Open, FileAccess.Read)) { //第三步:反序列化 Object obj= bf.Deserialize(fs); Person pe = obj as Person; Console.WriteLine(pe.Age); } Console.ReadKey(); }
元字符+++++++++++++++++++++++
.匹配出\n的任意一个字符
[a-z]a到z的任意一个字符
|或 优先级别最低
()改变优先级别
{n}匹配n次到多次
{n,}匹配至少n次
{n,m}匹配n到m次
*匹配0次或多次
+匹配1次或多次
?匹配0次或1次
^匹配一行的开始 另外一种意思:非[^0-9]
$匹配一行的结束
简单表达式++++++++++++++++++++
\s匹配所有空白字符
\S匹配所有非空白字符
\w匹配[0-9a-zA-Z_]和汉字
\W匹配除以上所有字符
\d代表一个数字[0-9]
\D 代表一个非数字[^0-9]
\b单词的边界
.Net中的正则表达式:
•常用的3种情况:(C#语法) –判断是否匹配:Regex.IsMatch(“字符串”,”正则表达式”); –字符串提取:Regex.Match(“字符串”,“要提取的字符串的正则表达式”);//只能提取一个(提取一次) –字符串提取(循环提取所有): Regex.Matches(),(可以提取所有匹配的字符串。) –字符串替换:Regex.Replace(“字符串”,”正则”,”替换内容”); –Regex.Split();