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#开发的基础,重 ...
随机推荐
- WIN8/8.1/10进入BIOS方法图解
1.首先点击桌面左下角的"开始". 2.然后点击电源. 3.然后按住shift,同时点击"重启".于是进入这个画面: 4.然后点击"疑难解答" ...
- 3dContactPointAnnotationTool开发日志(二十)
为了使工具更人性化,我又在每个status的text上绑了个可以拖拽实现值改变的脚本,但是不知道为啥rotx那个值越过+-90范围后连续修改就会产生抖动的现象,试了很多方法也没能弄好,不过实际用起 ...
- 【week4】课堂Scrum站立会议
项目:连连看游戏 小组名称:天天向上(旁听) 小组成员:张政 张金生 李权 武致远 已完成任务 1.本项目采用c#. 2. 初步界面. 形成一个windows下的游戏界面,每个需要消除的方块是一个bu ...
- Ubuntu 12.04.1 LTS 升级 PHP 从5.3 到 5.5
#!/bin/bash # desc install php5.5 #add-apt-repository ppa:ondrej/php5 #apt-get install python-softwa ...
- 【bzoj1782】[Usaco2010 Feb]slowdown 慢慢游 树链剖分+线段树
题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...
- Django 2.0 学习(10):Django 定制化
定制化admin表单 通过使用admin.site.register(Question)注册Question模型,Django可以构造默认的表单.通常,可以通过对象的注册机制来告诉Django我们想要 ...
- Elasticsearch 插件head和kibana
本次安装在win7下,linux操作差不多. Elasticsearch的版本是6.5.1 一.前置条件 1.安装nodejs,如果已经安装了,检查一下版本,最好大于6以上,不然后面会失败,官网上已经 ...
- Mac将应用拖入Finder工具栏
在Finder的工具栏上放一下应用,方便打开对应的文件,可以 Command + 鼠标拖动应用,将应用拖入Finder工具栏中. 本人的Finder工具栏上添加了vscode这个应用
- Python通过PhantomJS获取JS渲染后的网页源代码
新建一个文件,命名为test.js,内容如下: var page = require('webpage').create(), system = require('system'), address; ...
- MyBatis代码生成工具mybatis-generator在Myeclipse10中的使用
一.在MyEclipse安装目录下新建myPlugin目录,如下图所示: 二.将 mybatis.zip 里面的文件放在MyEclipse的dropins目录下,如下图所示: 三.在Myeclipse ...