.net基础总复习(2)
第二天
文件操作常用类
File类
//操作文件的
//复制、剪切、创建、移除
//File.Create(@"C:\Users\BDSOFT\Desktop\new.txt");
//Console.WriteLine("创建成功");
//File.Delete(@"a");
//File.Copy(@"a", @"b");
//File.Move(@"a",@"b");
//剪切
//Console.ReadKey();
//使用FIle类来读取数据
//一次性读取 大文件用Stream
// byte[] buffer = File.ReadAllBytes(@"C:\Users\BDSOFT\Desktop\1.txt");
// string str = Encoding.Default.GetString(buffer, 0, buffer.Length);
// Console.WriteLine(str);
//编码:把字符串以怎样形式存储为二进制 ASCII GBK GB2312 UTF-8
// Console.ReadKey();
//string[] str2 = File.ReadAllLines(@"C:\Users\BDSOFT\Desktop\1.txt",Encoding.Default);
//Encoding.Default 即系统默认编码 一般是gb2312
// for (int i = 0; i < str2.Length; i++)
// {
// Console.WriteLine(str2[i]);
// }
//如果要操作文本文件每行数据,那么用ReadAllLines
//ReadAllBytes和ReadAllText拿到的整陀数据
// string str = File.ReadAllText(@"C:\Users\BDSOFT\Desktop\1.txt",Encoding.Default);
// Console.WriteLine(str);
// =======================File类写入================
string str = "今天是最后一天复习啦";
//字符转换成字节数组
byte[] buffer = Encoding.Default.GetBytes(str);
//File.WriteAllBytes(@"C:\Users\BDSOFT\Desktop\1.txt", buffer);
//以行的方式写入 (这里传入的是string数组)
//File.WriteAllLines(@"C:\Users\BDSOFT\Desktop\1.txt", new string[] { "张三", "李四", "王五" });
//直接写入一大陀
// File.WriteAllText(@"C:\Users\BDSOFT\Desktop\1.txt", "今天很凉快");
//File.AppendAllText(@"C:\Users\BDSOFT\Desktop\1.txt", "没有覆盖哟");
Path类(对字符串操作)

文件本身没有改变。

Directory类
//Directory.CreateDirectory(@"C:\Users\BDSOFT\Desktop\新的文件夹");
//Directory.Delete(@"C:\Users\BDSOFT\Desktop\新的文件夹",true);
//Console.ReadKey();
//Directory.Move(@"a",@"b");
//string[] a = Directory.GetFiles(@"C:\Users\BDSOFT\Desktop\Music","*.mp4");
//for (int i = 0; i < a.Length; i++)
//{
// Console.WriteLine(a[i]);
//}
//Console.ReadKey();
练习题:把文件中工资翻倍,然后保存。

class Program
{
static void Main(string[] args)
{
//案例:对职工工资文件处理,所有人的工资加倍然后输出到新文件
string[] str = File.ReadAllLines(@"C:\工资.txt",Encoding.Default);
for (int i = 0; i < str.Length; i++)
{
//张三|5000
string[] strNew = str[i].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
//张三 5000
int salary = (int.Parse(strNew[1])*2);
//10000
str[i] = strNew[0] + '|' + salary.ToString();
}
File.WriteAllLines(@"C:\工资.txt", str,Encoding.Default);
}
Stream类(和StreamReader StreamWriter)
·文件流?
·两个大水缸,把一个缸中的水倒入另一个水缸中。两种方式:
- 1. 直接把一个缸中的水倒入另一个缸中
- 2. 用个桶来把一个缸中的水舀到另一个缸中
//FileStream StreamReader StreamWriter
//区别:一个是操作字节的,一个是操作字符的,垃圾回收器也不会帮助回收
using (FileStream fsRead = new FileStream(@"C:\1.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();
//OpenOrCreate直接覆盖最前面
//Append在最后面追加
using (FileStream fsWrite = new FileStream(@"C:\1.txt",FileMode.OpenOrCreate,FileAccess.Write))
{
string s = "今天天气好晴朗!!!";
byte[] buffer = Encoding.Default.GetBytes(s);
fsWrite.Write(buffer, 0, buffer.Length);
Console.ReadKey();
}
StreamReader
一种很装逼的写法:
using (FileStream fsRead = new FileStream(@"C:\1.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:\1.txt", true , Encoding.Default ,buffer.Length ))
{
sw.WriteLine("哈哈哈");
}
Console.WriteLine("ok");
序列化
class Program
{
static void Main(string[] args)
{
//要将序列化对象的类 标记为可以被序列化的
//Person p = new Person();
//p.Name = "张三";
//p.Age = 10;
//p.Gender = '男';
//using (FileStream fsWrite = new FileStream(@"C:\1.txt", FileMode.OpenOrCreate, FileAccess.Write))
//{
// BinaryFormatter bf = new BinaryFormatter();
// bf.Serialize(fsWrite, p);
//}
//Console.WriteLine("序列化成功");
//Console.ReadKey();
Person p;
using (FileStream fsRead = new FileStream(@"C:\1.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();
}
}
}
[Serializable]
public class Person
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public char Gender
{
get;
set;
}
}
一点额外内容
1.简单播放器(winform)
。。。
.net基础总复习(2)的更多相关文章
- C#基础总复习02
继续更新第二篇: 1:一元运算符:++ -- ++:不管是前加加还是后加加,变量的值最终都会自身加一. 前加加和后加加的区别体现在参与运算的时候,如果是后加加,则首先拿原值参与运算, 运算完成后再自身 ...
- C#基础总复习01
马上就快毕业了,准备把这几个月所学到的知识梳理一下,这儿所写的都是一些C#中最基础的东西(大牛不要笑话我,这也是我记录的一些笔记等等),希望能帮到一些正在学习这方面的知识的人,如果有写的不对的地方,望 ...
- Day 20 python基础总复习
一.计算机基础 1.1 计算机基础之编程 编程语言是人与计算机之间交流的介质 编程就是写一堆文件 编程为了奴隶计算机,解放劳动力 1.2 计算机组成原理 CPU 控制器:控制硬件 运算器:逻辑运算和算 ...
- .net基础总复习(1)
第一天 1.new关键字 (1) 创建对象 (2) 隐藏从父类那里继承过来的成员 2.访问修饰符 public: 公开的,公共的. private:私有的,只能在当前类的内部访问,类中的成员, 如果不 ...
- C#基础总复习03
继续更新...接下来就是面向对象的知识了 1.面向对象:概念:使用面向对象的思想进行编程可以让的程序变得扩展性更高,便于维护: 我们在现实生活中去描述一个人的时候,通过描述这个人的特征和行为. 我们在 ...
- .net基础总复习(3)
第三天 2.单例模式 1) 将构造函数私有化 2) 提供一个静态方法,返回一个对象 3) 创建一个单例 3.XML 可扩展的标记语言 XML:存储数据 注意: XML严格区分大小写,并且成对出现 ...
- EF6 在原有数据库中使用 CodeFirst 总复习(三、重建迁移)
本来原来学的时候,挺顺利的,没想到再次使用,还是遇到很多问题,导致更新失败,所以,只能重建迁移,免得看着乱乱的. 一.删除迁移,将数据恢复到(一)结束状态 1.删除文件夹 2.删除表 3.删除列 4. ...
- EF6 在原有数据库中使用 CodeFirst 总复习(五、生成发帖页面)
有点与在原有数据库中使用 CodeFirst 远了,不过是总复习吗,总得全面点. 一.在用户表(Users)中插入两个用户 二.生成发帖界面 MVC生成的界面很多,也没使用Ajax,实际开发中很少会使 ...
- DAY25、面向对象总复习
面向对象总复习:面向过程编程思想: 核心是 过程 二字, 过程指的是解决问题的步骤是,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心是 ...
随机推荐
- sh脚本文件
echo `date +%F` 打印当前日期 用于写备份脚本按照名字命名
- Eclipse maven工程 Missing artifact com.sun:tools:jar:1.7.0:system 解决方法
解决方案一:通过maven取运行时参数,eclipse提供的环境变量,基本类似System.getProperty("java.home") <dependency> ...
- Codeforces 789A Anastasia and pebbles( 水 )
链接:传送门 题意:这个人每次都去公园捡石子,她有两个口袋,每个口袋最多装 k 个石子,公园有 n 种石子,每种石子 w[i] 个,询问最少几天能将石子全部捡完 思路:排个序,尽量每天都多装,如果 k ...
- TCP连接的11中状态
1.CLOSED:初始状态,表示TCP连接时关闭状态,没有任何连接. 2.LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接收客户端的连接请求. 3.SYN_RCVD:表示服务器接收到来 ...
- phpunit使用
phpunit使用 标签(空格分隔): php 现在是凌晨 3 点.我们怎样才能知道自己的代码依然在工作呢? Web 应用程序是 24x7 不间断运行的,因此我的程序是否还在运行这个问题会在晚上一直困 ...
- 【codeforces 799B】T-shirt buying
[题目链接]:http://codeforces.com/contest/799/problem/B [题意] 告诉你每个人喜欢的衣服的颜色; 然后告诉你每件衣服的正面和背面的颜色以及它的价格; 只要 ...
- 今天我也用上了阿里云的Centos
Redis官方不支持Windows,第三方实现的64位服务端不稳定,因此在我的忽悠之下,公司出钱买了个阿里云的Centos7,4G内存,30G硬盘.现在我也可以真真正正的玩Centos了,python ...
- iOS富文本(一)属性化字符串
概述 iOS一些复杂的文本布局一般都是由底层的Core Text来实现的,直到iOS7苹果发布了Text Kit框架,Text Kit能够很简单实现一些复杂的文本样式以及布局,而Text Kit富文本 ...
- SPOJ COT2 Count on a tree II (树上莫队)
题目链接:http://www.spoj.com/problems/COT2/ 参考博客:http://www.cnblogs.com/xcw0754/p/4763804.html上面这个人推导部分写 ...
- TP5异常处理
TP5异常处理 标签(空格分隔): php, thinkphp5 自定义异常处理 namespace app\common\exception; use think\Exception; class ...