20151024_003_C#基础知识(File / FileStream / StreamReader/StreamWriter)
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)的更多相关文章
- File FileStream StreamReader StreamWriter C#
存在各种各样的IO设备,比如说文件File类(字符串文件和二进制文件),可以直接使用File类对文件进行读写操作. 这些各种IO的读取和写入是通过流的形式实现的,基类为Stream,针对各种不同的IO ...
- File FileStream StreamReader和StreamWriter
File 静态类 ReadAllBytes 和 WriteAllBytes ,用于一次性全部读取和写入小文件的字节码, ReadLine ReadkAll 用于一 ...
- C#文件与流(FileStream、StreamWriter 、StreamReader 、File、FileInfo、Directory、directoryInfo、Path、Encoding)
(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo.Path.Encoding) C#文 ...
- 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )
对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本的认知, 若要深入了解,还是得通过实际的项目才行了,好了废话不多说,上酸菜!! 注:红色标题为 ...
- 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite ) - Zery-zhang
一 基本介绍 操作文档,文件夹,需要用到的类 1 Directory (静态类) : 用于创建.移动和删除等操作通过 目录 和子 目录 DirectoryInfo (非静态): 2 File ...
- 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )(转载)
本文转自http://www.cnblogs.com/zery/p/3315889.html 对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本 ...
- C# 基础知识系列- 14 IO篇 流的使用
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件.目录和路径的操作有了一定的了解.这一篇开始,给大家演示一下流的各种操作.以文件流为例,一起来看看如何操作吧. ...
- C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)
一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件: //文件流:读取 FileStream fileStream = File.Open(@&qu ...
- C#基础知识梳理索引
C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...
随机推荐
- OSG数学基础:坐标系统
坐标系是一个精确定位对象位置的框架,所有的图形变换都是基于一定的坐标系进行的. 三维坐标系总体上可以分为两大类:左手坐标系和右手坐标系. 常用的坐标系:世界坐标系.物体坐标系和摄像机坐标系. 世界坐标 ...
- 【alpha】Scrum站立会议第2次....10.17
小组名称:nice! 小组成员:李权 于淼 杨柳 刘芳芳 项目内容:约跑app 1.任务进度 成员 已完成 今日完成 李权 数据库设计 消息发送代码实现 于淼 注册.登录界面,以及登录界面后台代码.发 ...
- redis——持久化方式RDB与AOF分析
https://blog.csdn.net/u014229282/article/details/81121214 redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 ...
- mysql学习之主从复制
该文使用mysql5.5 centos6.5 64位 一.主从复制的作用 1.如果主服务器出现问题,可以快速切换到从服务器. 2.对与实时性要求不高或者更新不频繁的应用可以在从服务器上执行查询操作,降 ...
- 【python】python字符串前面加u,r,b的含义
1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出 ...
- BZOJ1047:[HAOI2007]理想的正方形——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1047 https://www.luogu.org/problemnew/show/P2216#sub ...
- [bzoj] 2657 ZJOI2012 旅游 || bfs
原题 题意: 一个多边形,三角剖分,求一条对角线最多能经过多少三角形 题解: 因为不涉及坐标之类的,所以根几何肯定一点关系都没有. 我们会发现,对于有共边的两个三角形,可以被同一条线穿过,而这就相当于 ...
- 卡特兰数(Catalan Number) 学习笔记
一.三个简单的问题 1.给定一串长为2n的01序列,其中0和1的数量相等,满足任意前缀中0的个数不少于1的个数,求序列的个数 2.给出一串长为n的序列,按顺序将他们进栈,随意出栈,求最后进出栈的方案 ...
- UVA.725 Division (暴力)
UVA.725 Division (暴力) 题意分析 找出abcdefghij分别是0-9(不得有重复),使得式子abcde/fghij = n. 如果分别枚举每个数字,就会有10^10,肯定爆炸,由 ...
- React高阶组件总结
在多个不同的组件中需要用到相同的功能,这个解决方法,通常有Mixin和高阶组件. Mixin方法例如: //给所有组件添加一个name属性 var defaultMixin = { getDefaul ...