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. java jvm学习笔记三(class文件检验器)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验 ...

  2. 单实例运行tz

    (引用了 Microsoft.VisualBasic.ApplicationServices)SingleInstanceApplicationWrapper.cs    using System.W ...

  3. 验证码生成-->漂亮啊

    验证码不用输出太多的HTML代码,直接创建一个一般处理程序,直接上代码 public class VCode : IHttpHandler { HttpContext context = null; ...

  4. MSP430单片机输入与输出

    MSP430单片机的输入输出线绝大多数是服用的,除了个别的端口外,基本上是8为为一组,不同的型号的MSP430的端口有所不同,就msp430F5438而言,一共有11个I/O端口,其中除了第十一P11 ...

  5. 设计模式_Composite_合成模式

    形象例子: Mary今天过生日.“我过生日,你要送我一件礼物.”“嗯,好吧,去 商店,你自己挑.”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买.”“喂,买了三件了呀,我只答应送一件礼物的哦 ...

  6. 【暑假】[实用数据结构]UVAlive 3644 X-Plosives

    UVAlive X-Plosives 思路:    “如果车上存在k个简单化合物,正好包含k种元素,那么他们将组成一个易爆的混合物”  如果将(a,b)看作一条边那么题意就是不能出现环,很容易联想到K ...

  7. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇04:如何实现触控操作》

    4.如何实现触控操作 触控操作概述: 随着APPLE.Samsung.SONY等众多公司,将掌机.电脑和手机等产品在触控领域的不断探索,以触控为操作的机型越来越多的被投放到市场当中.触控游戏.触控软件 ...

  8. MySQL 字段类型详解

    一.非数字类型 类型 范围 说明   Char(N) [ binary] N=1~255 个字元 binary :分辨大小写 固定长度 std_name cahr(32) not null VarCh ...

  9. HDU1890 Robotic Sort Splay tree反转,删除

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1890 题目中涉及数的反转和删除操作,需要用Splay tree来实现.首先对数列排序,得到每个数在数列 ...

  10. Java 的集合框架

    Java集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一 ...