File类读写文件
//按照指定的编码格式按行读,返回的是个数组
string[] str= File.ReadAllLines(@"E:\C#\网盘课程\12Day\1\a.txt",Encoding.Default);
//返回的是个字符串
string str = File.ReadAllText(@"E:\C#\网盘课程\12Day\1\a.txt", Encoding.Default);
//返回的是字节数组,读取多媒体文件可以用ReadAllBytes
byte[] s= File.ReadAllBytes(@"E:\C#\网盘课程\12Day\1\a.txt");
string str = Encoding.Default.GetString(s);//将数组转换成字符串
foreach (var item in str)
{
Console.WriteLine(item);
}
//以字符串的形式写入
File.WriteAllText(@"E:\C#\网盘课程\12Day\1\a.txt","你好");
//以行的形式写入,写入的是string类型的数组
File.WriteAllLines(@"E:\C#\网盘课程\12Day\1\a.txt", new string[]{ "张三","李四"});
string str ="你好";
byte[] buffer = Encoding.Default.GetBytes(str);//将字符串转换成字节数组
//写入的是字节数组
File.WriteAllBytes(@"E:\C#\网盘课程\12Day\1\a.txt", buffer);
//追加指定的字符串,不覆盖原来的内容
File.AppendAllText(@"E:\C#\网盘课程\12Day\1\a.txt", "张三");
Console.ReadKey();
绝对路径和相对路径:
绝对路径:通过给定的这个路径可以直接在我的电脑中找到这个文件。
相对路径:文件相对于应用程序的路径。
我们在开发中应该尽量用相对路径
List泛型集合
//创建泛型集合对象
List<int> list = new List<int>();
list.Add(1);//添加单个元素
list.Add(2);
list.Add(3);
list.AddRange(new int[]{ 1,2,3,4,5});//添加集合
list.AddRange(list);//添加本身
int[] a=list.ToArray();//将集合转换为数组
List<int> b=a.ToList();//将数组转换为集合
for (int i = 0; i <b.Count; i++)
{
Console.WriteLine(b[i]);
}
Console.ReadKey();
装箱和拆箱
int a = 10;
object o = a;//将值类型转换为引用类型称为装箱
int b = (int)o;//将引用类型转换为值类型称为拆箱
看两种类型是否发生装箱或者拆箱,要看这两种类型是否存在继承关系。
如果有继承关系,有可能存在,如果没有继承关系,则一定没有关系。
字典
Dictionary<int, string> dir = new Dictionary<int, string>();
dir.Add(1, "张三");
dir.Add(2, "李四");
dir.Add(3, "王五");
dir[1] = "赵六";
//遍历方法一
foreach (var item in dir.Keys)
{
Console.WriteLine("键{0}对应的值是{1}", item, dir[item]);
}
//遍历方法二
foreach (KeyValuePair<int, string> kv in dir)
{
Console.WriteLine("键{0}对应的值是{1}", kv.Key, kv.Value);
}
Console.ReadKey();
FileStream
//使用FileStream来读取数据
//创建对象
FileStream fsread = new FileStream(@"E:\C#\网盘课程\12Day\1\a.txt", FileMode.OpenOrCreate, FileAccess.Read);
//声明一个字节数组
Byte[] buffer = new byte[1024 * 5];
//将读的内容放到字节数组中
int t = fsread.Read(buffer, 0, buffer.Length);
//类型转换成字符串型
string str = Encoding.Default.GetString(buffer);
//关闭流
fsread.Close();
//释放资源
fsread.Dispose();
Console.WriteLine(str);
Console.ReadKey();
//使用FileStream写入数据
using (FileStream fswrite = new FileStream(@"E:\C#\网盘课程\12Day\1\a.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
string str = "张三";
byte[] buffer = Encoding.Default.GetBytes(str);
fswrite.Write(buffer, 0, buffer.Length);
}
Console.ReadKey();
//使用FileStream实现多媒体文件的复制
static void Main(string[] args)
{
string source = @"E:\C#\网盘课程\12Day\1\a.wmv";
string target = @"E:\C#\网盘课程\12Day\1\b.wmv";
copyfile(source, target);
Console.ReadKey();
}
public static void copyfile(string source, string target)
{
//先读取文件,再写入文件
using (FileStream fsread=new FileStream(source,FileMode.Open,FileAccess.Read))
{
using (FileStream fswrite=new FileStream(target,FileMode.OpenOrCreate,FileAccess.Write))
{
byte[] buffer = new byte[1024 * 1024 * 5];
while (true)
{
//本次读取实际读取到的字节数
int r = fsread.Read(buffer, 0, buffer.Length);
if (r == 0)//返回0代表本次什么都没有读到
{
break;
}
fswrite.Write(buffer, 0, r);
}
}
}
}