C# Directory和Directory Info的应用及文件读写

一,Directory 和Directory Info的应用

  在Asp,net的实际应用中,上传文件的实现过程中要用到有关目录的操作,来现实文件的上传工作.下面分析下用C#完成文件上传过程的核心代码,其中控件FileUpload用来获取文件/

-------------代码段----------

string filename = FileUploadFileName;//获取上传文件的名字

string filetype = FileUploadFileName.Substring(filename.LastIndexOf(".")+1).ToLower();

上传文件的格式

if (filetype == "rar" || filetype == "doc" || filetype == "txt" || filetype == "pdf")

{//判断是文件格式是否是指定的格式

if (FileUploadFileBytes.Length <= 50 * 1024 * 1024)//判断文件的大小是否满足要求

{

DirectoryInfo filedir = new DirectoryInfo(Server.MapPath("fileupload/"));//获取文件夹fileupload在系统中的相对目录.

// 创建DirectoryInfo实例对象 filedir用来指向保存上传文件的目录.

if (!Directory. Exists(filedir.ToString()))Directory类的静态方法,用来判断目录是否存在

{

Directory.CreateDirectory(filedir.ToString());//如果所要求的目录不存在,调用Directory的静态方法CreateDirectory创建目录.

}

-------------代码段----------

  DirectoryInfo常用方法:

  DirectoryInfo dif = new DirectoryInfo("c:\\abcd");

  DirectoryInfo temp = new DirectoryInfo("c:\\atest");

  DirectoryInfo temp3 = new DirectoryInfo("C:\\");

  if (!dif.Exists)

  dif.Create();

  if (!temp.Exists)

  Directory.CreateDirectory(temp.ToString());

  if (temp.Exists)

  temp.Delete();

  dif.MoveTo(temp.ToString());

  DirectoryInfo[] idr = temp3.GetDirectories();//获取当前目录下的所有子目录.

  foreach (DirectoryInfo dir in idr)

  Console.WriteLine(dir.FullName);

  FileInfo[] files = temp3.GetFiles();

  foreach (FileInfo file in files)

  Console.WriteLine(file.FullName);

  输出C盘子目录信息:

 

  在程序运行之前和之后的C盘目录截图,比较变化的情况,多了个atest目录.

   

  二. 文件读写

   C#和java对于文件的操作的思路有点相似,都是采用管道技术和流操作—Stream来实现相应的功能.,开始操作文件的时候用到文件专用流:System.IO命名空间下的Filestream.,其构造函数有很多,现在先介绍一个很常用的方法: 

  FileStream 构造函数 (String, FileMode); 

  FileMode有:open,create,openOrcreate,createnew.append, Truncate等几种模式.

  下面先看一个例子:

  FileInfo mynewfile = new FileInfo("C:\\myfile.txt");//

  FileStream sf = new FileStream(mynewfile.ToString(), FileMode.Create);//构造函数,以创建模式打开目标文件,如果不存在就创建相应的文件.

  byte[] dataArray = new byte[100000];//字节

  new Random().NextBytes(dataArray);//创建随机字节

  for (int i = 0; i < dataArray.Length; i++)

  {

  sf.WriteByte(dataArray[i]);//将字节写入文件理.

  }

  其他构造方法有:

 

  我在这里就不多介绍了,大家可以参考Msdn的文件.关于文件的读写还有个更好的StreamWriter/和StreamReader.下一节将继续介绍.

  FielStream类操作的是字节和字节数组,字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行。

  FielStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置。

  FileStream只能处理原始字节(raw byte),处理原始字节的功能使用FileStream类可以用于处理任何数据文件。

posted @ 2009-07-20 19:56  zhdonghu  阅读(1259)  评论(0编辑  收藏  举报