C# FileInfo

下面的示例显示如何手动从文件读取字节,然后使用UTF8编码将它们转换为字符串:

示例:使用FileInfo类读取文件

//为指定路径创建FileInfo对象

FileInfo fi = new FileInfo(@"D:\DummyFile.txt");

//打开文件进行读\写

FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);

//创建与FileStream长度相同大小的字节数组byte[] fileBytes = new byte[fs.Length];

//定义计数器以检查要读取多少字节。读取每个字节时减少计数器int numBytesToRead = (int)fileBytes.Length;

//计数器指示已读取的字节数int numBytesRead = 0;

//迭代直到从FileStream中读取所有字节while (numBytesToRead > 0)

{

int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);

if (n == 0)

break;

numBytesRead += n;

numBytesToRead -= n;

}

//从FileStream中读取所有字节后,即可使用UTF8编码将其转换为字符串string filestring = Encoding.UTF8.GetString(fileBytes);

如上面的代码所示,您必须编写许多代码才能从FileSream读取/写入字符串。而使用 StreamReader 和 StreamWriter 可以轻松完成相同的读/写操作。

下面的示例显示 StreamReader 如何使从文件中读取字符串变得容易:

示例:使用 StreamReader 读取文件

//为指定路径创建FileInfo对象

FileInfo fi = new FileInfo(@"D:\DummyFile.txt");

//打开文件进行读\写

FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read , FileShare.Read);

//通过传递需要对其进行操作的FileStream对象来创建StreamReader的对象

StreamReader sr = new StreamReader(fs);

//使用ReadToEnd方法从文件读取所有内容string fileContent = sr.ReadToEnd();

//操作后关闭StreamReader对象

sr.Close();

fs.Close();

注意,fi.Open() 它具有三个参数:

  • 第一个参数是FileMode,用于创建和打开文件(如果文件不存在);

  • 第二个参数 FileAccess 表示读取操作;

  • 第三个参数是在打开文件时与其他用户共享文件以供阅读。

下面的示例显示 StreamWriter 如何使将字符串写入文件变得更容易:

示例:使用StreamWriter将文本写入文件

//为指定路径创建FileInfo对象

FileInfo fi = new FileInfo(@"D:\DummyFile.txt");

//打开文件进行读\写

FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read );

//创建StreamWriter对象以将字符串写入FileSream

StreamWriter sw = new StreamWriter(fs);

sw.WriteLine("Another line from streamwriter");

sw.Close();

不能同时对同一个 FileStream 对象执行读和写操作。如果您已经在读取文件,请创建一个单独的 FileStream 对象以写入同一文件,如下所示:

示例:StreamReader和StreamWriter

//为DummyFile.txt创建FileInfo对象

FileInfo fi = new FileInfo(@"D:\DummyFile.txt");

//打开DummyFile.txt进行读取操作

FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite , FileShare.ReadWrite);

//打开DummyFile.txt进行写操作

FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);

//获取StreamReader

StreamReader sr = new StreamReader(fsToRead);

//使用StreamReader对象读取所有文本string fileContent = sr.ReadToEnd();

sr.Close();

//获取StreamWriter

StreamWriter sw = new StreamWriter(fsToWrite);

//用StreamWriter写一些文字

sw.WriteLine("Another line from streamwriter");

sw.Close();

//关闭所有Stream对象

fsToRead.Close();

fsToWrite.Close();

本文链接:https://my.lmcjl.com/post/6780.html

展开阅读全文

4 评论

留下您的评论.