一、读写文本文件

可以用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 文件流输入输出的更多相关文章

  1. IO文件流

    定义:流是一种抽象的概念,通过流的方式组成无结构字符和字符序列,从流中取数据的操作进行输入输出.[io流的作用就是用流的方式进行输入输出] 常用语法: 1.   首先引用using.system.io ...

  2. .net System.IO.Stream 流操作类(FileStream等)

    Stream 是所有流的抽象基类.流是字节序列的抽象概念. 流涉及到的3个基本操作: 读取流,读取是指从流到数据结构(如字节数组)的数据传输. 写入流,写入是指从数据结构到流的数据传输. 流查找,查找 ...

  3. C++学习7-面向对象编程基础(多态性与虚函数、 IO文件流操作)

    多态 多态性是指对不同类的对象发出相同的消息将返回不同的行为,消息主要是指类的成员函数的调用,不同的行为是指不同的实现: 函数重载 函数重载是多态性的一种简单形式,它是指允许在相同的作用域内,相同的函 ...

  4. (Unity)XML文件读写与IO文件操作类使用介绍

    using System.Xml;                //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...

  5. Java通过IO流输入输出 向文件中存入大量三个属性的值,并通过验证前两个属性输出第三个属性

    package ABC1; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import ...

  6. winform 保存文件 打开文件 选择文件 字体样式颜色(流 using System.IO;)

    string filePath = ""; private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) ...

  7. Java IO 嵌套流、文本的输入输出和存储

    Java IO 嵌套流.文本的输入输出和存储 @author ixenos 1.   组合流过滤器(嵌套流) a)    跨平台文件分割符:常量字符串 java.io.File.seperator 等 ...

  8. Java IO详解(六)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  9. Java IO详解(七)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

随机推荐

  1. jquery显示和隐藏元素

    1.$('#id').show()/$('#id').hide()/$('#id').toggle() 2.$('#id').css('display','none')/$('#id').css('d ...

  2. Ubuntu系统U盘安装以及降内核

    由于项目需要,要用U盘制作一个Linux系统,支持EFI启动,并且内核版本要求是2.6.35.6.所以在选系统的时候,就必须要选安装文件里面带有EF I目录,并且该目录下面有BOOTx64.EFI和g ...

  3. Android NFC近场通信02----读写卡的准备工作

                        Android NFC近场通信02----读写卡的准备工作      因为公司接了一个听上去感觉比較NB的项目.给某油田做派工系统 .并由小女子负责Androi ...

  4. [RxJS] Chain RxJS Operators Together with a Custom `pipe` Function using Array.reduce

    Instead of writing complex operators, it's usually best to write simple, single-purpose operators th ...

  5. 一个重绘MFC的文件传输client

     一个重绘MFC的文件传输client,TCP/IP协议的文件传输client(支持上传.下载.续传.管理等功能,本处仅仅选择了上传功能).从用户视觉上看,肯定比原生MFC界面要有感觉,啥也不说了 ...

  6. 自己定义Gradle插件之"Hello World"

    自己定义Gradle插件之"Hello World" 0.新建一个用于开发这个插件的目录 1.确定Plugin id Plugin id一般定义为java 包名. 由字母和数字及& ...

  7. IOS报错:Unexpected ‘@’ in program

    IOS开发中出现此错误的原因: 1.宏定义重复. 我在OC与C++混编的时候,由于C++中使用到了interface,在工程中年将interface从定义为struct,当引用此接口时候出现Unexp ...

  8. NHibernate直接执行SQL进行插入

    有时候,需要用NHibernate直接执行SQL进行数据insert或update. 怎么写呢?简单一点的,可以直接拼凑出来的SQL,这样写: using NHibernate; StringBuil ...

  9. Codeforces Beta Round #22 (Div. 2 Only) E. Scheme dfs贪心

    E. Scheme   To learn as soon as possible the latest news about their favourite fundamentally new ope ...

  10. Effective C++学习笔记(Part Four:Item 18-25)

     近期最终把effectvie C++细致的阅读了一边.非常惊叹C++的威力与魅力.近期会把近期的读书心得与读书笔记记于此,必备查找使用,假设总结有什么不 当之处,欢迎批评指正: 如今仅仅列出框架 ...