C#读写文件的方法归纳

2011-03-29 18:51:39|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C#, 文件操作|来源:唯设编程网

1、使用FileStream读写文件

FileStream对象表示在磁盘或者网络路径上指向的文件流,这个类提供了在文件中读写字节的方法,但经常使用StreamReader或者StreamWriter类执行这些功能。FileStream类操作的是字节和字节数组,Stream类操作的是字符数据。字符数据易于使用,但是有些操作,如随机文件访问,就必须由FileStream对象执行。

使用FileStream时头文件需要增加IO引用相关的语句,下面是一个使用了FileStream类的文件头:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
1.1 FileStream读取数据

FileStream.Read()方法是从FileStream对象所指向的文件中访问数据的主要手段。这个方法从文件中读取数据,再把数据写入一个字节数组。它有三个参数:第一个参数是传入的字节数组,用来接收FileStream对象中的数据;第二个参数是字节数组中开始写入数据的位置:它通常是0,表示从数组开端向文件中写入数据;最后一个参数指定从文件中读出多少字节。

下面的示例演示从随机访问文件中读取数据:

public void fileRead(string filePath) {
    byte[] byData = new byte[200];
    char[] charData = new Char[200];

    try
    {
        FileStream aFile = new FileStream("../../Program.cs", FileMode.Open);
        aFile.Seek(113, SeekOrigin.Begin);
        aFile.Read(byData, 0, 200);
    }
    catch (IOException e)
    {
        Console.WriteLine("An IO exception has been thrown!");
        Console.WriteLine(e.ToString());
        Console.ReadKey();
        return;
    }

    Decoder d = Encoding.UTF8.GetDecoder();
    d.GetChars(byData, 0, byData.Length, charData, 0);

    Console.WriteLine(charData);
    Console.ReadKey();
}

使用FileStream类读取数据没有使用StreamReader类读取数据容易,因为FileStream类只能处理原始字节,处理原始字节的功能使FileStream类可以用于任何数据文件,而不仅仅是文本文件。通过读取字节数据,FileStream对象可以用于读取诸如图像和声音的文件。这种灵活性的代价是,不能使用FileStream类将数据直接读入字符串,而使用StreamReader类却可以这样处理。

1.2 FileStream写入数据:

向随机访问文件中写入数据的过程与从中读取数据非常类似。首先需要创建一个字节数组:最简单的办法是首先构建要写入文件中的字符数组;然后使用Encoder对象将其转换为字节数组,其用法非常类似于Decoder对象;最后调用Write()方法,将字节数组传送到文件中。

下面构建一个简单的示例演示其过程:

public void fileWrite(string filePath) {
    byte[] byData;
    char[] charData;

    try
    {
        FileStream aFile = new FileStream("Temp.txt", FileMode.Create);
        charData = "My pink half of the drainpipe.".ToCharArray();
        byData = new byte[charData.Length];
        Encoder e = Encoding.UTF8.GetEncoder();
        e.GetBytes(charData, 0, charData.Length, byData, 0, true);

        // Move file pointer to beginning of file.
        aFile.Seek(0, SeekOrigin.Begin);
        aFile.Write(byData, 0, byData.Length);
    }
    catch (IOException ex)
    {
        Console.WriteLine("An IO exception has been thrown!");
        Console.WriteLine(ex.ToString());
        Console.ReadKey();
        return;
    }
}
<12>
发表评论0条 】
网友评论(共?条评论)..
C#读写文件的方法归纳