目录
1.实例目标
了解如何创建/读/写文件,如何获取文件的属性,以及重定向文件指针等
2.编程思路
2.1 C#提供了一个抽象类Stream来读写存储媒介,FileStream类和读写器来创建/读/写一个文件,并且能获取关于文件的一些属性;
2.2 首先使用FileStream类来创建一个文件,并且以可读写方式打开一个文件。接着使用StreamWriter类来写这个文件,其中用到writeLine方法,然后创建一个1streamreader对象来读这个文件;
2.3 类streamreader中的basestream有seek()方法,使用该方法把流指针指向文件的开始,这样就可以使用readline方法读文件;
2.4 BinaryReader类可以以二进制方式读取数据流,它提供readByte()方法,也可以用Binarywriter类以二进制方式写数据流;
2.5 C#还提供了FileInfo类,该类提供了丰富的属性和方法获取一个文件的属性.
3.编程步骤
using System;
using System.IO;
namespace PRO16
{
//读写文件
public class FileAPP
{
public static void Main()
{
//在当前目录创建一个文件myfile.txt,对该文件具有读写权限
FileStream fsMyfile = new FileStream("myfile.txt", FileMode.Create, FileAccess.ReadWrite);
//创建一个数据流写入器,和打开的文件关联
StreamWriter swMyfile = new StreamWriter(fsMyfile);
//以文本方式写一个文件
swMyfile.WriteLine("Hello,World");
swMyfile.WriteLine("abcdefghijk");
swMyfile.WriteLine("ABCDEFGHIJK");
swMyfile.WriteLine("0123456789");
//冲刷数据(把数据真正写入到文件中去)
swMyfile.Flush();
//以文本方式读文件
StreamReader srMyfile = new StreamReader(fsMyfile);
//把文件指针重新定位到文件的开始
srMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
//打印提示消息
Console.WriteLine("*********以文本方式读文件***********");
//打印文件文本内容
string sl;
while((sl = srMyfile.ReadLine())!= null)
{
Console.WriteLine(sl);
}
Console.WriteLine();
//以文本方式读文件结束
//以二进制方式读文件
//创建一个二进制数据流读入器,和打开的文件关联
BinaryReader brMyfile = new BinaryReader(fsMyfile);
//把文件指针重新定位到文件的开始
brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
//打印提示消息
Console.WriteLine("*********以二进制方式读文件*********");
//打印文件文本内容
Byte bl;
while(brMyfile.PeekChar() > -1)
{
bl = brMyfile.ReadByte();
//13为\n,表示回车;10为\r,表示换行
if(bl != 13 && bl != 10)
{
Console.Write("{0}", bl.ToString());
Console.Write(".");
}
else
{
Console.WriteLine();
}
}
Console.WriteLine("\n");
//以二进制方式读文件结束
//关闭以上new的各个对象
// //关闭写入器和文件流
//C#使用在操作文件时,先关闭读写器,再关闭文件
swMyfile.Close();
brMyfile.Close();
srMyfile.Close();
fsMyfile.Close();
//读取文件属性
//打印提示信息
Console.WriteLine("**********读取文件属性**********");
FileInfo fiMyfile = new FileInfo("myfile.txt");
Console.WriteLine("文件名 :{0}", fiMyfile.Name);
Console.WriteLine("文件名(含路径):{0}", fiMyfile.FullName);
Console.WriteLine("文件大小(bytes):{0}", fiMyfile.Length);
Console.WriteLine("文件创建时间 :{0}", fiMyfile.CreationTime);
Console.ReadKey();
}
}
}