1:Path类是专门用来操作文件路径的(Path类是静态类):当然用字符串的处理办法也能实现。 
string str = @"C:\Users\成才\Desktop\Hashtable.txt";
            //返回文件名
            Console.WriteLine(Path.GetFileName(str));
            //返回文件名,但不包括扩展名
            Console.WriteLine( Path.GetFileNameWithoutExtension(str));
            //返回文件所在的文件夹名
            Console.WriteLine(Path.GetDirectoryName(str));
            //返回文件的扩展名
            Console.WriteLine(Path.GetExtension(str));
            //连接两个字符串作路径
            Console.WriteLine(Path.Combine(@"C:\a\","b.txt"));
   
   
2:File这个静态类是用来处理文件的(创建、删除、复制等) 
File.Create(@"C:\a\b\d.txt");
File.Delete(@"C:\a\b\d.txt");
File.Cope(@"C:\a\b\d.txt");
 
编码:将字符串以怎样的格式保存为二进制。
乱码:产生乱码的原因就是你保存这个文件所采用的编码格式和你打开这个文件所采用的编码格式不一样。
文本文件:拖到txt文件中还能看懂的文件就是文本文件。
 
3:读取文本文件:
//以UTF-8的编码格式读取1.txt这个文件
byte[] buffer= File.ReadAllBytes(@"C:\Users\成才\Desktop\1.txt");
string str=Encoding.GetEncoding("UTF-8").GetString(buffer);
Console.WriteLine(str);
Console.ReadKey();
 
4:向指定的路径写入文件:
//以默认的格式(ANSI)写入文件。
string str="我们都有一个家,名字叫中国!!!!";
byte[] buffer=Encoding.Default.GetBytes(buffer);
File.WriteAllBytes(@"C:\Users\成才\Desktop\2.txt",buffer);
Console.ReadKey();
 
5:File.ReadAllLines(路径,读取的编码方式); //返回一个字符串数组 
File.ReadAllText(路径,读取的编码方式); //返回一个字符串
前面这两个方法只能读取文本文件,不能读取音乐文件、多媒体文件等;
File.RradAllBytes(); //返回一个字节(byte)数组,可以读取各种文件,包括音乐、视频文件。
 
6:绝对路径和相对路径 
绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件。
相对路径:文件相对于应用程序的路径。
我们在开发的过程中尽量使用相对路径;
 
7:File.WriteAllLines(路径,字符串数组);
File.WriteAllText(路径,字符串);
File.WriteAllBytes(路径,字节数组); //这三个方法都会覆盖掉之前文本中有的东西。
 
8:在文本的后面追加东西有这几个方法:
File.AppendAllLines(路径,字符串数组);
File.AppendAllText(路径,字符串);
 
File类只能用来读取小文件,读取大文件需要用文件流;
 
 
8:泛型List
List<T> list=new List<T>();
list.Add();
list.AddRange();
list.Remove();
list.removeAt();
list.Clear();
list.Reverse();
泛型要比数组方便的多,类型一旦确定就能像动态数组一样用,并且泛型和数组之间可以相互转化;
如:int[] nums=list.ToArrray();
string[] str={"a","b","c"};
List<string> listtwo= str.ToList();
 
 
 
 
9:装箱、拆箱
装箱:将值类型转换为引用类型。
拆箱:将引用类型转换为值类型。
看两种类型是否发生了装箱或者拆箱,要看两者之间是否有继承关系;如果没有继承关系,一定没有发生装箱或者拆箱,有继承关系才有可能发生装箱或者拆箱。
在我们的代码中,要尽量避免装箱或者拆箱,因为这样时间会浪费内存,耗时较长。
 
 
10:Dictionary 字典
Dictionary<int,string> dic=new Dictionary<int,string>();
dic.Add(1,"a");
dic.Add(2,"b");
dic.Add(3,"c");
dic[1]="新来的";
遍历的时候:
Foreach(Var item in dic.Keys)
{
 Console.WriteLine("{0}----{1}",item,dic[item]);
}
或者是:
Foreach(KeysValuePair<int,string> kv in dic)
{
 Console.WriteLine("{0}----{1}",kv.Keys,kv.Values);
}
 
 
11:
FileStream是操作字节的,因此可以操作包括文本以外的其它各种文件;
StreamReader和StreamWriter是操作字符的,因此只能操作文本文件。
 
 
12:
将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的空间。
StreamReader和StreamWriter是专门用来操作文件的,如果只针对文件的话,用StreamReader
和StreamWriter要比FileStream方便的多。
接触到关于流的类时,一定要记得把创建对象的部分写在using里面,否则会容易造成忘记释放
资源,而造成内存泄漏。
用FileStream的好处是,可以操作任意类型的文件,但是中间要涉及到编码格式的转换。

C#基础篇--文件(流)的更多相关文章

  1. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  2. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  3. JAVA基础篇—文件与流

    处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等. OutputStream是字节输出流的所有类的超类,一般我们使用它的 ...

  4. java基础篇---文件上传(commons-FileUpload组件)

    上一篇讲解了smartupload组件上传,那么这一篇我们讲解commons-FileUpload组件上传 FileUpload是Apache组织(www.apache.org)提供的免费的上传组件, ...

  5. java基础篇---文件上传(smartupload组件)

    文件上传几乎是所有网站都具有的功能,用户可以将文件上传到服务器的指定文件夹中,也可以保存在数据库中,本篇主要说明smartupload组件上传. 在讲解smartupload上传前,我们先来看看不使用 ...

  6. java基础篇---文件上传(组件)

    转载自:http://www.cnblogs.com/oumyye/p/4234969.html 文件上传几乎是所有网站都具有的功能,用户可以将文件上传到服务器的指定文件夹中,也可以保存在数据库中,本 ...

  7. JAVA基础篇—文件上传下载

    /index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

  8. Spring Cloud Alibaba | Sentinel: 服务限流基础篇

    目录 Spring Cloud Alibaba | Sentinel: 服务限流基础篇 1. 简介 2. 定义资源 2.1 主流框架的默认适配 2.2 抛出异常的方式定义资源 2.3 返回布尔值方式定 ...

  9. Java 基础(四)| IO 流之使用文件流的正确姿势

    为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景 ...

随机推荐

  1. uva 10652

    大意:有n块矩形木板,你的任务是用一个面积尽量小的凸多边形把它们包起来,并计算出木板站整个包装面积的百分比. 思路:按照题意将所有矩形顶点坐标存起来,旋转时先旋转从中心出发的向量,求得各个坐标之后,求 ...

  2. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  3. HDFS体系结构:(Distributed File System)

    分布式系统的大概图 服务器越来越多,客户端对服务器的管理就会越来越复杂,客户端如果是我们用户,就要去记住大量的ip. 对用户而言访问透明的就是分布式文件系统. 分布式文件系统最大的特点:数据存储在多台 ...

  4. Oracle-查看oracle是否有表被锁

    问题现象: 查看oracle是否有表被锁 解决方法: select sid,serial#,program,terminal,username,b.object_id,c.object_name  f ...

  5. nyoj 17 单调递增最长子序列

    单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4   输入 ...

  6. 转载SSIS中的容器和数据流—数据转换(Transformations)续

    数据挖掘请求 数据挖掘任务是SSIS中一个很重要的任务,它的思想来源于一些算法.数据挖掘请求运行数据挖掘请求,并将结果输出到数据流.它还可以添加一些预测新列,一些应用场合如下列举: 根据已知的一些列, ...

  7. session 重写进入redis测试

    在实际业务中,当session存储过多 或者操作频繁,业务逐渐扩展的时候,文件存储已经无法满足session操作速度和需求,可以考虑用数据库或者nosql的redis来存储session,本文讲解如何 ...

  8. C++学习笔记(五):指针和引用

    声明指针: //指针声明 * 号左右的空格是可选的,下面的定义都是正确的 int *pointer1; int* pointer2; int*pointer3; int * pointer4; //注 ...

  9. paip.云计算以及分布式计算的区别

    paip.云计算以及分布式计算的区别 云计算的特点 1 网格计算 2 分布式计算 2 云计算以及网格计算以及分布式计算的区别 2 作者Attilax  艾龙,  EMAIL:1466519819@qq ...

  10. 一个通用数据库访问类(C#,SqlClient)

    本文转自:http://www.7139.com/jsxy/cxsj/c/200607/114291.html使用ADO.NET时,每次数据库操作都要设置connection属性.建立connecti ...