6-7笔记

1、大文件拷贝:1创建一个读取文件流;2再创建一个写入文件流;3创建一个读取或写入文件袋缓冲区,一般用byte数组来表示;4开始读取文件;5返回值r表示本次实际读取到的字节数;6将读取出来的buffer内容写道fswrite文件流中。fsRead.Position表示当前流的位置。

2、写一个文件拷贝器!
3、文件解密看老师的方法,重写一遍。
4、通过判断文件的前几个字节就能判断文件的编码格式。
5、 StreamWriter:1创建一个写文本文件的文件流,循环调用方法往里面写;StreamReader:sr.EndOfStream是否到了文件流末尾。

6、序列化:对象序列化步骤:1创建二进制对象序列化器Binaryformatter bf =new Binaryformatter ();2创建一个文件流;3开始序列化;
7、Person要想被序列化:1Person必须是可序列化的(Person类型必须标记为可序列化);2类中所有的字段属性的类型也必须标记为可序列化的。3当前类型的所有父类也必须标记为可序列化 的。建议, 在使用序列化的时候尽量避免使用自动属性,因为自动属性,每次编译的时候自动生成的字段名可能不一样,所以在反序列化的时候可能会造成问题。
在执行反序列化的时候,由于person.bin中存储的是原来person类型序列化后的结果,所以要对person.bin反序列化时候,需要person类所在的程序集。反序列化的时候,要返回一个对象,这个对象必须根据原来person所在的程序集才能创建,也就是说person.bin中包含的仅仅是一些数据,根据这些数据是无法在内存中创建对象的。只能是根据原来person类型的程序集来创建对象,然后把person.bin中的数据一一对应进行赋值。对象序列化,只是对对象的一些信息进行序列化,对于方法之类的 根本不进行序列化,也就是说person.bin中的只包含原来字段名和字段值,根本就没有方法信息,但是反序列化时候,返回的是一个对象,那么只根据这些字段信息是无法创建对象的,所以这个时候需要先根据原来的程序集获取person类型,然后在内存中创建一个person对象,然后再把反序列化得到的字段信息赋值给这个对象。

8、正则表达式:在.net中使用正则表达式的时候就用Regex这个类。Regex.IsMatch();判断一个字符串是否匹配某个正则表达式。Regex.Match(),从某个字符串中提取正则表达式的某个子字符串(只能提取一个);Regex.Matches(),字符串提取,可以提取所有匹配的字符串。Regex.Replace(),字符串替换,把所有匹配的正则表达式的正方形替换为对应的字符串。
9:^z|food$,表示以z开头的任意字符串或者以food结尾的任意字符串都返回true;因为|的优先级最低,所以上面表达式其实是  (^z)|(food$)
表示 z 或者 food 不表示,zood,但是,由于该正则表达式没有写^ 和$ 。所以在整个字符串中,只要有任意一个位置出现z或者food都返回true
^(z|f)ood$ 这个才表示要么是zood要么是food,只能匹配这两个。^zood$|^food$  ,与^z|food$不一样,^z|food$表示z.......或者......food
10、在做字符串提取的时候一般都不加^$(开头和结束);字符串提取只要找到一部分匹配就可以提取了,所以不能加,如果加了,就表示要与原字符串完全匹配。Regex.Match只能提取字符串中的第一个匹配的结果。
11、match.Groups[0].value中的存储的值和match.vavle中存储的值是一样的,表示提取的是Email的完整字符串。通过()来提取组,通过tch.Group[]来获取组,获取组要从索引1开始。
12、贪婪与非贪婪模式:
当正则表达式提取的时候如果一个表达式一个字符可以匹配,多个也可以匹配,这个时候会按照使用最多字符的方式来匹配,这个就叫贪婪模式。
(在限定符后面使用?是终结贪婪模式)当终结贪婪模式会按照最小的方式来匹配。默认正则表达式采用贪婪模式。
贪婪:.+;
非贪婪:.+?;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值