第二天

文件操作常用类

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. 1.     直接把一个缸中的水倒入另一个缸中
  2. 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)的更多相关文章

  1. C#基础总复习02

    继续更新第二篇: 1:一元运算符:++ -- ++:不管是前加加还是后加加,变量的值最终都会自身加一. 前加加和后加加的区别体现在参与运算的时候,如果是后加加,则首先拿原值参与运算, 运算完成后再自身 ...

  2. C#基础总复习01

    马上就快毕业了,准备把这几个月所学到的知识梳理一下,这儿所写的都是一些C#中最基础的东西(大牛不要笑话我,这也是我记录的一些笔记等等),希望能帮到一些正在学习这方面的知识的人,如果有写的不对的地方,望 ...

  3. Day 20 python基础总复习

    一.计算机基础 1.1 计算机基础之编程 编程语言是人与计算机之间交流的介质 编程就是写一堆文件 编程为了奴隶计算机,解放劳动力 1.2 计算机组成原理 CPU 控制器:控制硬件 运算器:逻辑运算和算 ...

  4. .net基础总复习(1)

    第一天 1.new关键字 (1) 创建对象 (2) 隐藏从父类那里继承过来的成员 2.访问修饰符 public: 公开的,公共的. private:私有的,只能在当前类的内部访问,类中的成员, 如果不 ...

  5. C#基础总复习03

    继续更新...接下来就是面向对象的知识了 1.面向对象:概念:使用面向对象的思想进行编程可以让的程序变得扩展性更高,便于维护: 我们在现实生活中去描述一个人的时候,通过描述这个人的特征和行为. 我们在 ...

  6. .net基础总复习(3)

    第三天 2.单例模式 1)  将构造函数私有化 2)  提供一个静态方法,返回一个对象 3)  创建一个单例 3.XML 可扩展的标记语言 XML:存储数据 注意: XML严格区分大小写,并且成对出现 ...

  7. EF6 在原有数据库中使用 CodeFirst 总复习(三、重建迁移)

    本来原来学的时候,挺顺利的,没想到再次使用,还是遇到很多问题,导致更新失败,所以,只能重建迁移,免得看着乱乱的. 一.删除迁移,将数据恢复到(一)结束状态 1.删除文件夹 2.删除表 3.删除列 4. ...

  8. EF6 在原有数据库中使用 CodeFirst 总复习(五、生成发帖页面)

    有点与在原有数据库中使用 CodeFirst 远了,不过是总复习吗,总得全面点. 一.在用户表(Users)中插入两个用户 二.生成发帖界面 MVC生成的界面很多,也没使用Ajax,实际开发中很少会使 ...

  9. DAY25、面向对象总复习

    面向对象总复习:面向过程编程思想: 核心是 过程 二字, 过程指的是解决问题的步骤是,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心是 ...

随机推荐

  1. linux--ubuntu的下载以及VMware Tool的安装

    1. Ubuntu的下载:http://cn.ubuntu.com/download/ 2. VMware Tool的安装: 第一步:在主机上,从 Workstation Pro 菜单栏中选择虚拟机 ...

  2. 【JavaScript框架封装】公共框架的封装

    /* * @Author: 我爱科技论坛 * @Time: 20180706 * @Desc: 实现一个类似于JQuery功能的框架 // 公共框架 // 种子模块:命名空间.对象扩展.数组化.类型的 ...

  3. Project Euler 32 Pandigital products

    题意:找出所有形如 39 × 186 = 7254 这种,由 1 - 9,9个数字构成的等式的和,注意相同的积不计算两次 思路:如下面两种方法 方法一:暴力枚举间断点 /*************** ...

  4. Swoole 同步模式与协程模式的对比

    在现代化 PHP 高级开发中,Swoole 为 PHP 带来了更多可能,如:常驻内存.协程,关于传统的 Apache/FPM 模式与常驻内存模式(同步)的巨大差异,之前我做过测试,大家能直观的感受到性 ...

  5. python中的and、or 操作符

    在python中 非空 非零的数都为真 1. 其"and"操作符返回的结果是决定表达式结果的值:两边条件都为真则结果为真,有一假则为假 1) 当and两边条件为“真”时,返回的是a ...

  6. 【hdu 6342】Expression in Memories

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的问号都改成'1' 然后会发现只有+0?这种情况 需要把?改成+. 看看这样的0后面的1是不是由问号改过来的就好了.是的话 再 ...

  7. 工具-VMWARE技巧-桥接连外网-WIN7

    使用虚拟机wmware如何连接宿主主机 最简单的方法,使用直接连接主机的模式,然后把宿主机的IP更改为和虚拟机同一个网段的机器就行 但是既要上网,有要连接虚拟机,就需要使用桥接,在编辑->虚拟网 ...

  8. oracle 解除锁表sql

    select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b ...

  9. HDU1312 / POJ1979 / ZOJ2165 Red and Black(红与黑) 解题报告

    题目链接:pid=1312" target="_blank">HDU1312 / POJ1979 / ZOJ2165 Red and Black(红与黑) Red ...

  10. Tomcat学习之ClassLoader

    Tomcat学习之ClassLoader 2012-09-04 22:19 8993人阅读 评论(4) 收藏 举报  分类: WEB服务器(13)  版权声明:本文为博主原创文章,未经博主允许不得转载 ...