在.NET Framework 中进行的所有输入和输出工作都要用到流(stream)

有两种类型的流:

  • 输出流:当向某些外部目标写入数据时,就要用到输出流(将数据写入到文件中)。
  • 输入流:用于将数据读入程序可以访问的内存或变量中(从文件中读入数据到内存或者变量中)。

下面列出文件操作的一些常用类:

类名 说明
File 静态实用类,提供许多静态方法,用于移动、复制和删除文件
Directory 静态实用类,提供许多静态方法,用于移动、复制和删除文件
Path 实用类,用于处理路径名称
FileStream 表示可写或可读,或二者均可的文件。此文件可以同步或异步地读写
StreamReader 从流中读取字符数据,可以使用FileStream 将其创建为基类
StreamWriter 向流写入字符数据,可以使用FileStream 将其创建为基类

其中File 类的常用方法有:

方法 说明
Copy() 将文件从源位置复制到目标位置
Create() 在指定的路径上创建文件
Delete() 删除文件
Open() 返回指定路径上的FileStream 对象
Move() 将指定的文件移动到新位置。可以在新位置为文件指定不同的名称

eg:

            File.Create(@"F:\abc.txt");  //创建文件 abc.txt
File.Copy(@"F:\abc.txt",@"F:\Files\abc.txt"); //将 abc.txt 文件 复制到 Files文件夹中(开始里面没有abc.txt文件)

检查是否存在某个文件:

            bool t = File.Exists(@"F:\Test.txt");
Console.WriteLine(t);

Directory类(静态类)的常用方法

创建文件夹:

            创建文件夹    静态类
Directory.CreateDirectory(@"F:\Test1");
Directory.Delete(@"F:\Test1");

获取应用程序的当前目录:

            string path = Directory.GetCurrentDirectory();  //获取应用程序的当前工作目录
Console.WriteLine(path);

FileStream对象

FileStream 对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader 或StreamWriter 执行这些功能。这是因为FileStream 类操作的是字节和字节数组(byte[]),而Stream 类操作的是字符数据(char[])。

FileStream类有两个常用的构造函数:

第一个:

FileStream aFile = new FileStream(filename, FileMode.<Member>);

第二个:

FileStream aFile = new FileStream(filename, FileMode.<Member>, FileAccess.<Member>);

其中  FileMode.<Member> 和 FileAccess.<Member> 是个枚举值。

其中FileMode.<Member>取值为:

FileAccess.<Member>取值为:

使用 FileStream类 从文件中读出数据

            byte[] byData = new byte[];
char[] charData = new char[]; try
{
FileStream aFile = new FileStream(@"F:\Test.txt", FileMode.Open); //使用指定的路径和创建模式初始化 FileStream 类的新实例。 aFile.Seek(, SeekOrigin.Begin); //从文件的第几个字符开始查找,下标从0开始,这里相当于从b开始计算
aFile.Read(byData, , ); //读出文件中的数据,并存在 byData字节数组中
} catch (System.Exception ex)
{
Console.WriteLine("An Exception Occured!");
Console.WriteLine(ex.ToString());
Console.ReadKey();
} //Decoder类 将一个字节数组转换为字符数组 用于输出
Decoder d = Encoding.UTF8.GetDecoder(); d.GetChars(byData, , byData.Length, charData, ); //该方法用于提取 字节数组 byData , 并存储在 charData字节数组中 Console.WriteLine(charData); //输出 charData数组中的数据
Console.ReadKey();

使用FileStream 类向文件中写入数据

            byte[] byData = new byte[];
char[] charData = new char[]; //将输入的字符串存入到字符数组 charData[] 中
Console.Write("请输入一个字符串:");
string temp = Console.ReadLine();
for (int i = ; i < temp.Length; i++)
{
charData[i] = temp[i];
} //将字符数组转化为字节数组
Encoder en = Encoding.UTF8.GetEncoder();
en.GetBytes(charData, , charData.Length, byData, , true); //File.Create(@"F:\Temp.txt");
FileStream fs = new FileStream(@"F:\Temp1.txt", FileMode.CreateNew);
fs.Seek(, SeekOrigin.Begin);
fs.Write(byData, , ); //此处已将字符写入到 字节数组byData中

使用 StreamReader 和  StreamWriter  对文件进行最简单的读写操作

进行写操作

            //最简单的把向文件中写入数据
StreamWriter sw = new StreamWriter("text2.txt");
sw.Write("hello world");
sw.Close();

此段代码将在你的项目中 ..\bin\Debug  中产生一个 text2.txt的文本文件, 其中写入了内容 " hello world ".

进行读操作: (只返回一行数据)

            StreamReader sr = new StreamReader("text2.txt");
string str = sr.ReadLine(); // ReadLine() 只能返回一行字符串
sr.Close();
Console.WriteLine(str);

输出结果:

若想返回文件中的全部内容,则使用 StreamReader 的  Read()方法

            //创建一个缓冲区来接收从流中读出的数据
char[] data = new char[];
StreamReader sr = new StreamReader("text2.txt");
sr.Read(data, , data.Length);
sr.Close();
Console.WriteLine(data);

输出结果:

C#中的文件操作的更多相关文章

  1. 第32课 Qt中的文件操作

    1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...

  2. 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作

    原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...

  3. 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体

    [源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...

  4. 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理

    [源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...

  5. Java中的文件操作(一)RandomAccessFile

    今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...

  6. Win 32平台SDK中的文件操作

    读取文件: HANDLE hFile ; // 声明文件操作内核对象句柄 hFile = CreateFile(, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ...

  7. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  8. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  9. 说说Python 中的文件操作 和 目录操作

    我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...

随机推荐

  1. 【风马一族_Java】 Java的文件类 java.io

    BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取. 可以指定缓冲区的大小,或者可使用默认的大小.大多数情况下,默认值就足够大了. 通常,Reader ...

  2. exynos 4412 电源管理芯片PMIC 的配置及使用方法

    /** ****************************************************************************** * @author    Maox ...

  3. System Generator入门

      System generator 安装之后会在Simulin模块库中添加一些Xilinx FPGA专用的模块库,包括Basic Element,Communication,Control Logi ...

  4. Tomcat启动超时

    当启动tomcat时候出现 Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the s ...

  5. CSS3 text-rendering属性

    这种非标准的属性目前不被推荐.我们一般会找一个可以替代的方法来完成相同的功能,不到外不得已,最好别用.   CSS的这个text-rendering属性通常被用在Windows和Linux系统中,用来 ...

  6. SQLServer数据库表中将指定列分组转一行

    不说明,直接看代码: --1. 创建表,添加测试数据 CREATE TABLE #test(code varchar(50), [values] varchar(10)) INSERT #test S ...

  7. php文本操作方法集合比较第2页

    fgets和fputs.fread和fwrite.fscanf和fprintf 格式化读写函数fscanf和fprintf fscanf函数,fprintf函数与前面使用的scanf和printf 函 ...

  8. Java生成唯一GUID UUID

    GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值. GUID ...

  9. Android Material Design:ViewPager与android.support.design.widget.TabLayout双向交互联动切换

    通常,android.support.design.widget.TabLayout与Android的ViewPager联合使用,实现与ViewPager的切换与联动.(1)比如,当用户手指触摸选择T ...

  10. js各类共用方法

    function GetParameterValueByName(parametername) { var reg = new RegExp("(^|&)" + param ...