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. C# 随机读写入文件

    先来代码再解释 public Worker(string path) { FileStream fs = new FileStream( path, FileMode.OpenOrCreate, Fi ...

  2. (Java)利用ListIterator(iterator 重复器/迭代器的子接口) 操作ArrayList

    add()方法是在下一个将要取得的元素之前插入新的元素.因此如果在下一个将要取得的元素的序号为0,则在序号0的元素前插入新的元素. 测试: 见第1.行,在序号为0的元素前添加一个元素. 见第2.行:这 ...

  3. ASP.Net MVC_DotNetZip简单使用方法,解决文件压缩的问题[转]

    准备工作: 在vs工具栏中找到NuGet   下载DotNetZip   现在就可以使用DotNetZip强大的类库了,在这里我给出一些简单的使用. ? 1 2 3 4 5 6 7 8 9 10 11 ...

  4. Zabbix探索:网络设备监控1

    近期需要大量添加网络设备,为了避免以后在节点100上出现问题,所以特地申请了一台虚拟机,用作代理110. 虽然Zabbix模板中的英文很简单,但是为了同事着想,还是将大部分内容汉化了,避免今后说理解不 ...

  5. 富文本HTML编辑器UEditor

    Baidu百度开源富文本HTML编辑器UEditor JS代码网 发表于: 2013-10-30 分类:HTML编辑器  点击:2133  UEditor是由百度web前端研发部开发所见即所得富文本H ...

  6. NOIP2009 最优贸易

    3. 最优贸易 (trade.pas/c/cpp) [问题描述] C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间 多只有一条道路直接相连.这 m 条道 ...

  7. KNN算法java实现代码注释

    K近邻算法思想非常简单,总结起来就是根据某种距离度量检测未知数据与已知数据的距离,统计其中距离最近的k个已知数据的类别,以多数投票的形式确定未知数据的类别. 一直想自己实现knn的java实现,但限于 ...

  8. (Trie) uvalive 3942 Remember the word

    题意:告诉你一个母串和子串,能用多少种不同的方案组合出母串. 思路:字典树(显然)+DP DP: dp[i]+=dp[j+1]  i<=j<=m-1,且i到j的字符串能在字典树中找到.也就 ...

  9. cocos2d-x的helloLua例子函数名定义误导初学者

    初次研究cocos2d-x, cocos2d-x支持lua是一个很不错的功能,使用lua来开发有个最大的好处就是不用每次改了游戏代码都编译,大多数情况下改了脚本直接运行程序就可以了,发布更新时也不用更 ...

  10. 云计算分布式大数据Hadoop实战高手之路第八讲Hadoop图文训练课程:Hadoop文件系统的操作实战

    本讲通过实验的方式讲解Hadoop文件系统的操作. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发布云 ...