1.FIle类、Path类、Directory类复习
操作文件的
File 操作文件,静态类,对文件整体操作。拷贝、删除、剪切等。
Directory 操作目录(文件夹),静态类。
Path 对文件或目录的路径进行操作(很方便)[字符串]
Strean 文件流,抽象类。

Path 操作文件路径
File 操作文件
复制、剪切、创建、移除
//File.Create(@"C:\Users\SJD\Desktop\new.txt");
//Console.WriteLine("创建成功");
//Console.ReadKey();

//File.Delete(@"C:\Users\SJD\Desktop\new.txt");
//Console.WriteLine("删除成功");
//Console.ReadKey();

//File.Move(@"C:\Users\SJD\Desktop\new.txt", @"C:\Users\SJD\Desktop\1.txt");
//Console.WriteLine("剪切成功");
//Console.ReadKey();

使用File类来读取数据(读取小文件,因为是一次性读取,大文件用文件流来读取)

File的三个读取的方法

1. 以字节数组的形式读取
byte[] buffer = File.ReadAllBytes(@"C:\Users\SJD\Desktop\123.txt");
string str = Encoding.Default.GetString(buffer, 0, buffer.Length);
Console.WriteLine(str);
Console.ReadKey();

2.以字符串数组的形式读取,用在操作每行数据上
string[]str= File.ReadAllLines(@"C:\Users\SJD\Desktop\123.txt",Encoding.Default);
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i]);
}
Console.ReadKey();

3.以字符串的形式读取,只用于看一下,不做任何操作
string str = File.ReadAllText(@"C:\Users\SJD\Desktop\123.txt", Encoding.Default);
Console.WriteLine(str);
Console.ReadKey();

File的三个写入的方法

1. 以字节数组的形式写入,会覆盖原来的内容
string str = "今天天气好晴朗,处处好风光";
byte[] buffer = Encoding.Default.GetBytes(str);
File.WriteAllBytes(@"C:\Users\SJD\Desktop\1.txt", buffer);
Console.WriteLine("写入成功");
Console.ReadKey();

2.以字符串数组的形式写入一行一行
File.WriteAllLines(@"C:\Users\SJD\Desktop\1.txt", new string[] { "今天天气好晴朗,处处好风光" });
Console.WriteLine("写入成功");
Console.ReadKey();

3.以字符串的形式直接写入
string str = "今天天气好晴朗,处处好风光";
File.WriteAllText(@"C:\Users\SJD\Desktop\1.txt", str);
Console.WriteLine("写入成功");
Console.ReadKey();

4.追加不覆盖,前面加上Append,有AppendAllLines和AppendAllText两种
File.AppendAllText(@"C:\Users\SJD\Desktop\1.txt", "肯定没有覆盖");
Console.WriteLine("追加成功");
Console.ReadKey();

Directory类
1.创建指定路径的文件夹
Directory.CreateDirectory(@"C:\Users\SJD\Desktop\新建文件夹");
Console.WriteLine("创建成功");
Console.ReadKey();

2.删除指定路径的文件夹,文件夹目录不是空的就不能删,非要删除,后面加个true
Directory.Delete(@"C:\Users\SJD\Desktop\新建文件夹",true);
Console.WriteLine("删除成功");
Console.ReadKey();

3.没有copy这个方法,但有move(剪切)
Directory.Move(@"C:\Users\SJD\Desktop\123", @"C:\Users\SJD\Desktop\456");
Console.WriteLine("OK");
Console.ReadKey();

4.Directory.GetFiles 获取你指定的文件夹下文件的全路径,后面加上*.格式,可以只读取选择的格式文件路径
string[] path = Directory.GetFiles(@"C:\Users\SJD\Desktop\456", "*.jpg");
for (int i = 0; i < path.Length; i++)
{
Console.WriteLine(path[i]);
}
Console.ReadKey();

2、文件流
两个大水缸,把一个缸中的水倒入另一个水缸。两种方式
.直接把一个缸中的水倒入另一个缸中。 file类
.用一个桶来把一个缸中的水舀到另一个缸中。 文件流
需要创建对象

FileStream 操作字节的
StreamReader StreamWriter 操作字符的
垃圾回收器不会帮我们自动回收占用的资源,必须要手动的close和dispose
但代码一多总忘记加这两个,所以我们把它写在using里面,让他自动的帮助我们释放

FileStream fsRead 读
using (FileStream fsRead=new FileStream(@"C:\Users\SJD\Desktop\123.txt",FileMode.OpenOrCreate,FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
//表示本次读取实际读取到的有效字节数
int r= fsRead.Read(buffer, 0, buffer.Length);
string s= Encoding.Default.GetString(buffer, 0, r);
Console.WriteLine(s);
}
Console.ReadKey();

FileStream fsWrite 追加写入
using (FileStream fsWrite=new FileStream(@"C:\Users\SJD\Desktop\234.txt",FileMode.OpenOrCreate,FileAccess.Write))
{
string str = "今天天气好晴朗";
byte[] buffer = Encoding.Default.GetBytes(str);
fsWrite.Write(buffer, 0, buffer.Length);
Console.WriteLine("写入成功");
}
Console.ReadKey();

StreamReader
using (FileStream fsRead=new FileStream(@"C:\Users\SJD\Desktop\123.txt",FileMode.OpenOrCreate,FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fsRead,Encoding.Default))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
}
Console.ReadKey();

StreamWriter
byte[] buffer = new byte[1024 * 1024];
using (StreamWriter sw=new StreamWriter(@"C:\Users\SJD\Desktop\123.txt",true,Encoding.Default,buffer.Length))
{
sw.WriteLine("哈哈哈");
}
Console.WriteLine("OK");
Console.ReadKey();

3、序列化
要将序列化对象的类 标记为可以被序列化
[Serializable]
把对象序列化成二进制

序列化
using (FileStream fsWrite = new FileStream(@"C:\Users\SJD\Desktop\123.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsWrite, p);
}
Console.WriteLine("序列化成功");
Console.ReadKey();

反序列化
Person p;
using (FileStream fsRead = new FileStrea
m(@"C:\Users\SJD\Desktop\123.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter();
p = (Person)bf.Deserialize(fsRead);
}
Console.WriteLine(p.Name);
Console.WriteLine(p.Age);
Console.WriteLine(p.Gender);
Console.ReadKey();

4、窗体应用程序

C#基础笔记(第二十一天)的更多相关文章

  1. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  2. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  3. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  4. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  5. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  6. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  7. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  8. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

  9. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

随机推荐

  1. python入门第3篇 pycharm安装及使用

    内容: 1. python开发工具的介绍及安装 2.pycharm的设置及技巧 一.python开发工具的介绍及安装 python下载后就自带了一个官方的IDE,官方的IDE我个人觉得不是很好用,所以 ...

  2. 通过 NPOI 生成 Excel

    HSSFWorkbook hssfworkbook; ISheet sheet1; public void BuildExcel() { hssfworkbook = new HSSFWorkbook ...

  3. C#中StreamWriter与BinaryWriter的区别兼谈编码。

    原文:http://www.cnblogs.com/ybwang/archive/2010/06/12/1757409.html 参考: 1. <C#高级编程>第六版 2.  文件流和数据 ...

  4. 图像特征与描述子(直方图, 聚类, 边缘检测, 兴趣点/关键点, Harris角点, 斑点(Blob), SIFI, 纹理特征)

    1.直方图 用于计算图片特征,表达, 使得数据具有总结性, 颜色直方图对数据空间进行量化,好比10个bin 2. 聚类 类内对象的相关性高 类间对象的相关性差 常用算法:kmeans, EM算法, m ...

  5. js Excel导出

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...

  6. 4-30 HTML 细节摘录

     <b> 定义粗体文本. <big> 定义大号字. <em> 定义着重文字. <i> 定义斜体字. <small> 定义小号字. <s ...

  7. SpringMVC @RequestBody请求参数在postman中的请求

    使用SpringMVC框架,controller使用参数  @RequestBody  LoginReq req   注解方式模拟http请求 需要请求header添加一个参数 设置  Header参 ...

  8. MVC-READ1

    将具有不同稳定性的元素融为一体,具有最差稳定性的元素决定了整体的稳定性,这是“短板理论”在软件设计中的体现. MVC的创建者是Trygve M. H. Reenskau,他是挪威的计算机专家,同时也是 ...

  9. Configure、中间件与ErrorHandlingMiddleware全局异常捕获

    一.Configure Startup.cs中的Configure方法主要是http处理管道配置.中间件和一些系统配置,其中 IApplicationBuilder: 定义一个类,该类提供配置应用程序 ...

  10. intellij idea15,SVN commit file提示No changes detected

    备注:我用的intellij 15,已经配置了SVN.且我的工程是从SVN导出的   遇到的问题:Subversion提交代码时提示No changes detected,当然新文件想要add也是选项 ...