装箱:值类型转换为引用类型
拆箱:引用类型转换为值类型
拆箱装箱发生的前提:
1.必须有继承关系
2.一种是值类型,一种是引用类型,来有可能发生拆装箱
拆装箱的结果:
损耗性能
拆装箱的意义:
尽量避免拆装箱
如何检验是否是拆装箱:
反编译工具中,选择IL
代码中出现BOx即为装箱
UnBOx即为拆箱
文件流
关键字:FileStream
命名空间:System.IO
使用时搭配using使用
读取范例
Using(FileStream fsRead=new FileStream("路径",FIleMode.Open,FileAccess.Read))
{
byte[] buffer=new byte[fsRead.Length];
fs.Read(buffer, 0, buffer.Length);
string str= System.Text.Encoding.Default.GetString(buffer);
Console.WriteLine(str);
}
写入范例
string msg = "锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(msg);
using (FileStream fs = new FileStream("2,txt",FileMode.Create, FileAccess.Write))
{
fs.Write(buffer, 0, buffer.Length);//一次加进去 这是文件比较小
}
复制大文件
string path1 = @"D:\德云社相声\德云社乙未年开箱整场(1).flv";
string path2 = @"德云社乙未年开箱整场(1).flv";
//读取
using (FileStream fs = new FileStream(path1, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];//每次读取5m 容易看 标准化请这么写
int r = fs.Read(buffer, 0, buffer.Length);
using (FileStream fsW = new FileStream(path2, FileMode.Create, FileAccess.Write))
{
while (r > 0)
{
fsW.Write(buffer, 0, r);
r = fs.Read(buffer, 0, buffer.Length);
}
}
}
专门操作读
关键字:StreamRead
实例
Using(StreamReader sr=new StreamReader("路径"))
{
string line="";
While(line=sr.ReadLine())!=null)
{
Console.ReadLine(line);
}读取第一行,重复操作可以全部读
string s= sr.ReadToEnd();//全部读取
}
专门操作写
StreamWrite
Using(StreamWriter sw=new StreamWriter(“路径”))
{
sw.Write(“哈哈”);
}
流文件是专门操作大文件的,FIle操作小文件