1:绝对路径和相对路径

绝对路径:通过给定的路径直接能在我的电脑中找到这个文件。

相对路径:文件相对于应用程序的路径。

2:编码格式

乱码:产生乱码的原因,就是你保存这个文件所采用的编码,跟你打开这个文件所采用的编码格式不一样。(GB2312:简体中文; GBK:简体中文+繁体中文)

UTF:Universal TransFormation Format

目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),

它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。

Unicode码扩展自ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。

这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。

Unicode最初打算作为ASCII的补充,可能的话,最终将代替它。考虑到ASCII是电脑中最具支配地位的标准,所以这的确是一个很高的目标。

UTF-8是UNICODE的一种变长字符编码又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。

用在网页上可以同一页面显示中文简体繁体及其它语言(如日文,韩文)

3:File类

using System.IO; 静态类

File类只能用来读取小文件(读取的内容放在内存中)。

File.Create(path); //创建文件对象

File.Delete(path); //删除一个文件

File.Copy(oldPath,newPath); //复制一个文件

File.Exist(path); //path文件是否存在

4:FileStream类: 操作字节的(可以是任何文件)

using System.IO; 继承于Stream

4.1:FileStream创建

创建FileStream对象,将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源。

流处理记得using或Close

4.1.1:FileStream Read 流处理使用Close

 FileStream fsRead = new FileStream(@"C:\Users\admin\Desktop\aaa.txt", FileMode.OpenOrCreate, FileAccess.Read);
byte[] buffer = new byte[ * * ];
//返回本次实际读取到的有效字节数
int r = fsRead.Read(buffer, , buffer.Length);
//将字节数组中每一个元素按照指定的编码格式解码成字符串
string s = Encoding.Default.GetString(buffer, , r); //关闭流
fsRead.Close();
//释放流所占用的资源
fsRead.Dispose();
Console.WriteLine(s);
Console.ReadKey();

FileStream Read(小文件读取)

4.1.2:FileStream Read 流处理使用using

 using (FileStream fssRead = new FileStream(@"C:\Users\admin\Desktop\aaa.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] bufferr = new byte[ * * ];
//返回本次实际读取到的有效字节数
int rr = fssRead.Read(bufferr, , bufferr.Length);
//将字节数组中每一个元素按照指定的编码格式解码成字符串
string ss = Encoding.Default.GetString(bufferr, , rr); Console.WriteLine(ss);
Console.ReadKey();
}

FileStream Read(小文件读取)

4.1.3:FileStream Write 流处理使用using

 using (FileStream fsWrite = new FileStream(@"C:\Users\admin\Desktop\aaa.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
string str = "准备覆盖了。。。。";
byte[] buffer = Encoding.Default.GetBytes(str);
fsWrite.Write(buffer, , buffer.Length);
}
Console.WriteLine("OK");
Console.ReadKey();

FileStream Write(小文件读取)

4.1.4:FileStream,使用文件流实现多媒体文件(大文件)的读取

     class Program
{
static void Main(string[] args)
{
string sourcePath = @"C:\Users\admin\Desktop\SourceFile.avi";
string targetPath = @"C:\Users\admin\Desktop\CopyFile.avi";
CopyFile(sourcePath, targetPath);
Console.WriteLine("CopyFile Success");
Console.ReadKey();
} static void CopyFile(string sourcePath, string targetPath)
{
using (FileStream fsRead = new FileStream(sourcePath, FileMode.OpenOrCreate, FileAccess.Read))
{
using (FileStream fsWrite = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write))
{
//可能文件比较大,需要循环读取
while (true)
{
Byte[] buffer = new byte[ * * ];
int r = fsRead.Read(buffer, , buffer.Length); if (r == )
{
break;
}
fsWrite.Write(buffer, , r);
}
}
}
}
}

FileStream Read/Write(大文件读取)

5:StreamReader / StreamWriter类:操作字符的(只能是文本文件)

using System.IO; 继承于TextReader/TextWriter

5.1:StreamReader Read txtFile

 using (StreamReader srRead = new StreamReader(@"C:\Users\admin\Desktop\aaa.txt", Encoding.Default))
{
while (!srRead.EndOfStream)
{
Console.Write(srRead.ReadLine());
}
}

StreamReader Read txtFile

5.2:StreamWriter Write txtFile

 using (StreamWriter swWrite = new StreamWriter(@"C:\Users\admin\Desktop\aaa.txt", false, Encoding.Default))
{
swWrite.WriteLine("今天天气好晴朗。。。。。");
}
Console.WriteLine("OK");
Console.ReadKey();

StreamWriter Write txtFile

其它流NetworkStream / MemoryStream 

6:Path类

using System.IO; 静态类

Path.GetFileName(); //获得文件的名字(包含扩展名)

Path.GetFileNameWithoutExtension();获得文件的名字(没有扩展名)

Path.GetExtension(); //获得文件的扩展名

Path.GetDirectoryName();//获得文件所在的文件夹的名称

Path.GetFullPath();//获得文件所在的全路径

Path.Combine();//合并字符串作为路径

7:Directory类

using System.IO; 静态类

Directory.GetFiles(path); //返回指定目录中的文件的名称

Directory.CreateDirectory(path); //目录创建方法

Directory.Delete(path); //目录删除方法

Directory.Move(string sourceDirName, string destDirName); //目录移动方法

Directory.GetDirectories(path); //获取当前目录下的所有子目录方法

Directory.Exist(path); //判断目录是否存在方法

20151024_003_C#基础知识(File / FileStream / StreamReader/StreamWriter)的更多相关文章

  1. File FileStream StreamReader StreamWriter C#

    存在各种各样的IO设备,比如说文件File类(字符串文件和二进制文件),可以直接使用File类对文件进行读写操作. 这些各种IO的读取和写入是通过流的形式实现的,基类为Stream,针对各种不同的IO ...

  2. File FileStream StreamReader和StreamWriter

    File 静态类 ReadAllBytes 和 WriteAllBytes ,用于一次性全部读取和写入小文件的字节码,                  ReadLine  ReadkAll  用于一 ...

  3. C#文件与流(FileStream、StreamWriter 、StreamReader 、File、FileInfo、Directory、directoryInfo、Path、Encoding)

    (FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo.Path.Encoding)     C#文 ...

  4. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )

    对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本的认知, 若要深入了解,还是得通过实际的项目才行了,好了废话不多说,上酸菜!! 注:红色标题为 ...

  5. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite ) - Zery-zhang

    一 基本介绍 操作文档,文件夹,需要用到的类 1 Directory (静态类) :      用于创建.移动和删除等操作通过 目录 和子 目录 DirectoryInfo (非静态): 2 File ...

  6. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )(转载)

    本文转自http://www.cnblogs.com/zery/p/3315889.html 对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本 ...

  7. C# 基础知识系列- 14 IO篇 流的使用

    0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件.目录和路径的操作有了一定的了解.这一篇开始,给大家演示一下流的各种操作.以文件流为例,一起来看看如何操作吧. ...

  8. C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)

    一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件: //文件流:读取 FileStream fileStream = File.Open(@&qu ...

  9. C#基础知识梳理索引

    C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...

随机推荐

  1. epoll&ext4文件系统

    1.第一个终端运行nesttest,nesttest首先fork一个子进程,然后父进程退出,子进程首先打开一个txt普通文件对应fd为3,然后创建一个epfd,对应fd为4 lybxin@Inspir ...

  2. WCF面试精典题汇总

    1.WCF接口中的参数改名问题 在写WCF Web Service接口的时候,如果你对接口的参数名做改动的时候,一定要记住Update所有应用该Web service的客户端的Referrence,否 ...

  3. 在windows搭建react

    1.安装必须的软件 1.Python 2    注意勾选 Add python.exe to Path,选项,这样就可以在安装完成后,不用手动去添加环境变量    安装完,打开cmd.exe,输入py ...

  4. perf中branch-filter到底是干嘛的?

    ./arch/x86/events/intel/core.c:2161:            data.br_stack = &cpuc->lbr_stack;./arch/x86/e ...

  5. BZOJ 1045 糖果传递(思维)

    设第i个人给了第i+1个人mi个糖果(可以为负),因为最后每个人的糖果都会变成sum/n. 可以得到方程组 mi-mi+1=a[i+1]-sum/n.(1<=i<=n). 把方程组化为mn ...

  6. 【刷题】HDU 4405 Aeroplane chess

    Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled fr ...

  7. POJ3068:"Shortest" pair of paths——题解

    http://poj.org/problem?id=3068 题目大意: 从0-n-1找到两条边和点都不相同(除了0和n-1外)的最小费用路径. ——————————————————————————— ...

  8. java 实现多个接口 方法重名的解决办法——内部类

    package com.kk.innerClass; /** * 通过内部类实现接口 * 解决多个接口中方法重名问题 * */interface Machine { void run();} clas ...

  9. 探索CAS无锁技术

    前言:关于同步,很多人都知道synchronized,Reentrantlock等加锁技术,这种方式也很好理解,是在线程访问的临界区资源上建立一个阻塞机制,需要线程等待 其它线程释放了锁,它才能运行. ...

  10. 【单调队列】【P1714】 切蛋糕

    传送门 Description 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸 ...