C#基础笔记(第二十一天)
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#基础笔记(第二十一天)的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
- MYSQL基础笔记(六)- 数据类型一
数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...
- MYSQL基础笔记(五)- 练习作业:站点统计练习
作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...
- MYSQL基础笔记(四)-数据基本操作
数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...
- MYSQL基础笔记(三)-表操作基础
数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...
- MYSQL基础笔记(二)-SQL基本操作
SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...
- MYSQL基础笔记(一)
关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
随机推荐
- CNN网络参数
卷积神经网络 LeNet-5各层参数详解 LeNet论文阅读:LeNet结构以及参数个数计算 LeNet-5共有7层,不包含输入,每层都包含可训练参数:每个层有多个Feature Map,每个 ...
- 「小程序JAVA实战」小程序视频展示页开发(52)
转自:https://idig8.com/2018/09/22/xiaochengxujavashizhanxiaochengxushipinzhanshiyekaifa51/ 这次说下,小程序的视频 ...
- PHP截取中文不乱吗
function utf_substr($str, $len) { for ($i = 0; $i < $len; $i++) { $temp_str = substr($str, 0, 1); ...
- Android bitmap转byte
逆转start协议输出 private static byte[] bitmap2byte(Bitmap bmp) throws Exception{ return bitmap2byte(bmp, ...
- SpringMVC 学习笔记(处理器映射器的配置)
前端控制器(dispatchServlet) 在web.xml中配置前端控制器,在服务器启动时就被创建,用来对请求和响应进行接收 和 分发处理,其在配置时可以设置一个初始化参数,用来定位SpringM ...
- Spring Cloud Config配置中心的使用
一.概述 1. 为什么使用? 1> 配置文件太多,不方便维护 2> 配置文件一般都保存这各种明文显示的密码,无法保证配置内容的安全性,也无法做到按权限分配给个人 3> 更新配置项目需 ...
- Axure知识点
1 一个事件包含N个用例:一个用例包含N个动作.
- codeforces:Prefix Sums分析和实现
题目大意: 给出一个函数P,P接受一个数组A作为参数,并返回一个新的数组B,且B.length = A.length + 1,B[i] = SUM(A[0], ..., A[i]).有一个无穷数组序列 ...
- centos7虚拟机安装elasticsearch6.4.x-遇到的坑
OS:Centos7x虚拟机 1H2Gjdk:1.8elasticsearch:5.6.0 1.下载“elasticsearch-5.6.0.tar.gz”解压到/usr/local/elastics ...
- Python3 abs() 函数
Python3 abs() 函数 Python3 数字 描述 abs() 函数返回数字的绝对值. 语法 以下是 abs() 方法的语法: abs( x ) 参数 x -- 数值表达式,可以是整数,浮 ...