C# System.IO 文件流输入输出
一、读写文本文件
可以用fileStream来读写文本文件,但是FileStream是通过字节形式来读写数据的,要把字节数据转换为文本,要自己处理编码转换。
对于文本文件的读写,通常用 StreamReader类和 StreamWriter类更方便。其底层是通过FileStream实现读写文本文件的。
1、构造函数
Public StreamReader(string path,Encoding encodeing)
其中path指定要读取的完整文件路径,encoding指定要使用的字节编码。例如GB2312,UTF8等编码形式
using System;
using System.IO;
using System.Text;
namespace StreamReader
{
class Program
{
[STAThread]
public static void Main(string[] args)
{
StreamReader sr=new StreamReader("f:\\temp.txt",Encoding.GetEncoding("gb2312"));
string line;
while((line=sr.ReadLine())!=null)
{
Console.WriteLine(line);
}
sr.close();
}
}
}
二、写入文本文件
与StreamReader类对应的类是StreamWriter类,它专门用于写入文本文件
1、构造函数
Public StreamWrite(string path,bool append,Encoding encoding);
其中path指定要写入的完整文件路径,append为false则该文件被改写,如果该文件存在,并且append为true,则数据被追加到该文件中。否则将创建新文件。Encoding指定要使用的字节编码。
(注意:append为true为追加,append为false为覆盖)
using System;
using System.IO;
using System.Text;
namespace StreamReader
{
class Program
{
[STAThread]
public static void Main(string[] args)
{
StreamWriter sw=new StreamWriter("f:\\temp.txt",true,Encoding.GetEncoding("gb2312"));
string line="hello world!;
sw.WriteLine(line);
sw.close();
}
}
}
三、Stream类
是派生出各种类的抽象类,处理字节流
其中一些派生类包括
– FileStream
– MemoryStream
– BufferedStream
– CryptoStream
方法包括:
3.1FileStream类构造函数
FileStream(string FilePath, FileMode)
FileStream(string FilePath, FileMode, FileAccess)
FileStream(string FilePath, FileMode, FileAccess, FileShare)
方法:
int Read(byte array, offset, count)
int ReadByte( )
void Write(byte array, offset, count)
void WriteByte(byte value)
枚举数:
FileMode 枚举数
– Append
– Create
/若文件已存在,则引发IO异常
– CreateNew
– Open
– OpenOrCreate
– Truncate
FileAccess 枚举数
– Read
– Write
– ReadWrite
FileShare 枚举数
– None
– Read
– Write
– ReadWrite
3.2MemoryStream类
用于从内存中读取数据和将数据写入内存中
以下是 MemoryStream 的一些方法
int Read(byte array, offset, count)
int ReadByte( )
void Write(byte array, offset, count)
void WriteByte(byte value)
void WriteTo(Stream stream)
3.3BufferedStream类
用于在缓冲区中读取和写入
• 当缓冲区满(默认缓冲区大小:4096 字节)或关闭时,内容将自动刷新输出到底层流
它有两个重载的构造函数
Public BufferedStream(Stream StName);
Public BufferedStream(Stream StName,int bsize);
3.4CryptoStream
对数据流中的数据进行加密、解密
using System.Security.Cryptography;
使用前加上上面的命名空间
四、Dirctory类
1.Directory类
目录使用 Directory类,可以用目录类创建、移动目录,并可列举目录及子目录的内容。Directory类全部是静态方法。
2、DirectoryInfo类
在使用DirectoryInfo类的属性和方法前必须先创建它的对象实例,在创建时需要指定该实例所对应的目录。例如:DirectoryInfo di=new DirectoryInfo(''c:\\mydir'');DirectoryInfo类的常用方法见表。
五、Path类
C# System.IO 文件流输入输出的更多相关文章
- IO文件流
定义:流是一种抽象的概念,通过流的方式组成无结构字符和字符序列,从流中取数据的操作进行输入输出.[io流的作用就是用流的方式进行输入输出] 常用语法: 1. 首先引用using.system.io ...
- .net System.IO.Stream 流操作类(FileStream等)
Stream 是所有流的抽象基类.流是字节序列的抽象概念. 流涉及到的3个基本操作: 读取流,读取是指从流到数据结构(如字节数组)的数据传输. 写入流,写入是指从数据结构到流的数据传输. 流查找,查找 ...
- C++学习7-面向对象编程基础(多态性与虚函数、 IO文件流操作)
多态 多态性是指对不同类的对象发出相同的消息将返回不同的行为,消息主要是指类的成员函数的调用,不同的行为是指不同的实现: 函数重载 函数重载是多态性的一种简单形式,它是指允许在相同的作用域内,相同的函 ...
- (Unity)XML文件读写与IO文件操作类使用介绍
using System.Xml; //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...
- Java通过IO流输入输出 向文件中存入大量三个属性的值,并通过验证前两个属性输出第三个属性
package ABC1; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import ...
- winform 保存文件 打开文件 选择文件 字体样式颜色(流 using System.IO;)
string filePath = ""; private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) ...
- Java IO 嵌套流、文本的输入输出和存储
Java IO 嵌套流.文本的输入输出和存储 @author ixenos 1. 组合流过滤器(嵌套流) a) 跨平台文件分割符:常量字符串 java.io.File.seperator 等 ...
- Java IO详解(六)------随机访问文件流
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
- Java IO详解(七)------随机访问文件流
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
随机推荐
- Go---Redis连接池
之前一篇文章介绍过使用redigo连接redis数据库处理,在使用中发现如果初始化一条链接连接redis做相关操作,使用中发现当两个程序交替使用redis时,先前建立的链接会断掉,只能每次操作的时候重 ...
- FM算法及FFM算法
转自:http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html http://blog.csdn. ...
- javascript array-like object
http://www.nfriedly.com/techblog/2009/06/advanced-javascript-objects-arrays-and-array-like-objects/ ...
- C#如何引用定义好的dll文件
1 添加引用,找到dll文件 2 引用类的名称空间,生成类的实例,调用类的方法,测试OK.
- web爬虫之登录google paly 商店
我们先打开Google play 首页 ,点击右上角"登陆"button,即跳到登陆页面 每次我要用爬虫的方式来登陆某个站点的时候,我都会先随便输入一个账号password点击登陆 ...
- C++对象模型——解构语意学(第五章)
5.4 对象的效率 (Object Efficiency) 在下面的效率測试中,对象构造和拷贝所须要的成本是以Point3d class声明为基准,从简单形式逐渐到复杂形式,包含Plain Ol ...
- 有关java构造器的笔记
当程序中首次出现使用一个类A时, 无论是使用A的静态成员还是创建一个对象(声明一个A类对象不算), 那么类加载器就会首先对A进行加载, 在对A进行加载的过程中, 如果A有一个extends的父类B, ...
- Android 官方博客 - Android应用程序的内存分析(翻译)(转)
转自:http://www.cnblogs.com/wisekingokok/archive/2011/11/30/2245790.html Dalvik虚拟机支持垃圾收集,但是这不意味着你可以不用关 ...
- 2016/3/31 拾遗 php字符串中 转义字符 “ ’‘ ” ’ “” ‘ " \’ ' ' \‘ " " \" '' \ " " 使用
<?php echo $str_string1='甲问:"你在哪里学的PHP?"'; echo "<br />"; echo $str_str ...
- jdk 版本不一致导致的错误
平时做项目时难免会从git,svn下载代码或者把别人的项目文件导入到自己的MyEclipse中进行操作,因此会遇到很多问题,常见的有一种是使用的jdk版本不一致造成的报错, 错误案例: 错误提 ...