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. 3dContactPointAnnotationTool开发日志(五)

      今天要做的第一件事就是把obj文件里不同的对象分割开来.   通过仔细观察发现obj文件中以"o "开头的行会跟着一个对象的名字.g代表对象所属组名,我这里只要用到对象名就行了 ...

  2. 查询MySQL某字段相同值得重复数据

    1.先查询重复的id: SELECT book_id,COUNT(*) AS COUNT FROM xs_book_source WHERE site_id=5 GROUP BY book_id HA ...

  3. WASM

    WASM WebAssembly https://webassembly.org/ https://github.com/appcypher/awesome-wasm-langs https://me ...

  4. 第50天:scrollTo小火箭返回顶部

    scrollTo(x,y)//可把内容滚动到指定的坐标scrollTo(xpos,ypos)//x,y值必需 1.固定导航栏 <!DOCTYPE html> <html lang=& ...

  5. bzoj4332[JSOI2012]分零食

    一下午被这题的精度续掉了...首先可以找出一个多项式的等比数列的形式,然后类似poj的Matrix Series,不断倍增就可以了.用复数点值表示进行多次的多项式运算会刷刷地炸精度...应当用int存 ...

  6. [洛谷P3550][POI2013]TAK-Taxis

    题目大意:一条路上有三个点,$0$为起始位置,$d$为总部,$m$为家.有$n$辆车,每辆车最多行驶$x_i$,都从$d$出发,可以在任意位置结束,问最少几辆车可以到家. 题解:贪心,发现当人在$[0 ...

  7. BZOJ5319 & 洛谷4559 & LOJ2551:[JSOI2018]军训列队——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5319 https://www.luogu.org/problemnew/show/P4559 ht ...

  8. BZOJ3714 [PA2014]Kuglarz 【最小生成树】

    题目链接 BZOJ3714 题解 我们如果知道了所有的数,同样就知道了所有的前缀和 相反,我们如果求出了所有前缀和,就知道了所有的数,二者是等价的 对于一个区间\([l,r]\)如果我们知道了前缀和\ ...

  9. Transformation 线段树好题 好题 (独立写出来对线段树不容易)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others)T ...

  10. Java Zip压缩

    1.压缩文件或整个目录 // ZipCompression.java import java.io.File;import java.io.FileInputStream;import java.io ...