一个平凡菜鸟的C#琐碎总结 ----- 文件操作(一)

来源:互联网 发布:日进斗金软件下载 编辑:程序博客网 时间:2024/04/30 11:01

注:C#的文件操作都是包含在System.Io的命名空间里面。

一、Path类:

对一个路径做相应操作,包括文件路径,目录路径。通常会用到Path这个类。

1.更改路径字符串的扩展名

Public static  string  ChangeExtension(string  path,string  extension)

参数

path(String):要修改的路径信息.

extension(String):新的扩展名。

返回值:String,修改后的路径字符串。

注意细节:a、如果extension 是 null,则返回的字符串包含指定的路径,其扩展名已移除(点还在)。string s=Path.ChangeExtension(@"c:\path.dll", "");//返回:"c:\path."b、如果path 是 null 或空字符串 (""),则返回的路径信息是未修改的。string s2 = Path.ChangeExtension("",".txt");//返回:""C、如果 path 不具有扩展名,并且 extension 不是 null,则返回的路径字符串包含 extension,它追加到 path 的结尾。string s3 = Path.ChangeExtension(@"c:\目录",".txt");//返回:"c:\目录.txt"。 如果这里的extension不含句点,会自动添加,返回的还是"c:\目录.txt"

2、合并两个字符路径字符串

publicstatic string Combine(string path1,string path2)

    参数:

path1(String) ,第一个路径

path2(String), 第二个路径

返回值:String,合并后的路径字符串。

常见的合并操作为:

string path1 = @"c:\目录";

string path2 = @"install.txt";

string s4 = Path.Combine(path1, path2);

//返回:"c:\目录\install.txt"

 3.获取指定路径字符串的目录信息

  public  static string GetDirectoryName(string path)

  直接看几个示例了:

string fileName =@"C:\mydir\myfile.ext";

string path =@"C:\mydir\";

string rootPath =@"C:\";

 

Path.GetDirectoryName(fileName);

//返回:'C:\mydir'

Path.GetDirectoryName(path);

//返回:'C:\mydir'

Path.GetDirectoryName(rootPath);

//返回:””

4.获取指定路径字符串的扩展名

public staticstring GetExtension(string path)

string fileName =@"C:\mydir.old\myfile.ext";

string path =@"C:\mydir.old\";

Path.GetExtension(fileName);

//返回 : '.ext'

Path.GetExtension(path);

//返回 :' '

二、File类和FileInfo类

File类和FileInfo类的区别和使用方法.,两者的主要区别是File不能实例化,只提供静态方法,而后者可以实例化,提供的方法和File类相似. C#语言中通过File和FileInfo类来创建、复制、删除、移动和打开文件。在File类中提供了一些静态方法,使用这些方法可以完成以上功能,但File类不能建立对象。FileInfo类使用方法和File类基本相同,但FileInfo类能建立对象。在使用这两个类时需要引用System.IO命名空间。这里重点介绍File类的使用方法。

1、简单介绍些方法

AppendText:返回StreamWrite,向指定文件添加数据;如文件不存在,就创建该文件。

 Copy:复制指定文件到新文件夹。

Create:按指定路径建立新文件

Delete:删除指定文件。

Exists:检查指定路径的文件是否存在,存在,返回true。

GetAttributes:获取指定文件的属性。

GetCreationTime:返回指定文件或文件夹的创建日期和时间。

GetLastAccessTime:返回上次访问指定文件或文件夹的创建日期和时间。

GetLastWriteTime:返回上次写入指定文件或文件夹的创建日期和时间。

Move:移动指定文件到新文件夹。

Open:返回指定文件相关的FileStream,并提供指定的读/写许可。

OpenRead:返回指定文件相关的只读FileStream。

OpenWrite:返回指定文件相关的读/写FileStream。

SetAttributes:设置指定文件的属性。

SetCretionTime:设置指定文件的创建日期和时间。

SetLastAccessTime:设置上次访问指定文件的日期和时间。

SetLastWriteTime:设置上次写入指定文件的日期和时间。

2、下面通过程序实例来介绍其主要方法:

(1)文件打开方法:File.Open

该方法的声明如下:public staticFileStream Open(string path, FileMode mode)。

下面的代码打开存放在c:\Example目录下名称为e1.txt文件,并在该文件中写入hello。

FileStream  TextFile=File.Open(@"c:\Example\e1.txt",FileMode.Append);

byte []  Info={(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};

TextFile.Write(Info,0,Info.Length);

TextFile.Close();

(2)文件创建方法:File.Create

该方法的声明如下:public  static  FileStream Create(string path)。下面的代码演示如何在c:\Example下创建名为e1.txt的文件。

FileStream  NewText = File.Create(@"c:\Example\e1.txt");

NewText.Close();
(3)文件删除方法:File.Delete

该方法声明如下:public staticvoid Delete(string path)。下面的代码演示如何删除c:\Example目录下的e1.txt文件。

File.Delete(@"c:\Example\e1.txt");

(4)文件复制方法:File.Copy

该方法声明如下:

public static void Copy(string  sourceFileName,string  destFileName,bool  overwrite);

下面的代码将c:\Example\e1.txt复制到c:\Example\e2.txt。由于Cope方法的OverWrite参数设为true,所以如果e2.txt文件已存在的话,将会被复制过去的文件所覆盖。

File.Copy(@"c:\Example\e1.txt",@"c:\Example\e2.txt",true);

(5)文件移动方法:File.Move

该方法声明如下:public  static  void Move(string  sourceFileName,string destFileName);下面的代码可以将c:\Example下的e1.txt文件移动到c盘根目录下。注意:只能在同一个逻辑盘下进行文件转移。如果试图将c盘下的文件转移到d盘,将发生错误。

File.Move(@"c:\Example\BackUp.txt",@"c:\BackUp.txt");

(6)判断文件是否存在的方法:File.Exist

该方法声明如下:public staticbool Exists(string path);下面的代码判断是否存在c:\Example\e1.txt文件。

if(File.Exists(@"c:\Example\e1.txt"))//判断文件是否存在

(7)得到文件的属性

用下面的代码可以得到文件的属性,例如文件创建时间、最近访问时间、最近修改时间等等。

FileInfo fileInfo=new FileInfo(“file1.txt”);

string s=fileInfo.FullName+”文件长度=”+fileInfo.Length+”,建立时间=”+ fileInfo.CreationTime+”;

也可用如下代码:

string s=”建立时间=”+File.File.GetCreationTime(“file1.txt”)+”最后修改时间=”+File.GetLastWriteTime(“file1.txt”)+”访问时间=”+File.GetLastAccessTime(“file1.txt”);

 

三、Directory类和DirectoryInfo类

Directory类来创建、复制、删除、移动文件夹。在Directory类中提供了一些静态方法,使用这些方法可以完成以上功能。但Directory类不能建立对象。DirectoryInfo类使用方法和Directory类基本相同,但DirectoryInfo类能建立对象。在使用这两个类时需要引用System.IO命名空间。这里重点介绍Directory类的使用方法。

Directory类常用的方法如下:

CreateDirectory:按指定路径创建所有文件夹和子文件夹。

Delete:删除指定文件夹。

Exists:检查指定路径的文件夹是否存在,存在,返回true。

GetCreationTime:返回指定文件或文件夹的创建日期和时间。

GetCurrentDirectory:获取应用程序的当前工作文件夹。

GetDirectories:获取指定文件夹中子文件夹的名称。

GetDirectoryRoot:返回指定路径的卷信息、根信息或两者同时返回。

GetFiles:返回指定文件夹中子文件的名称。

GetFileSystemEntries:返回指定文件夹中所有文件和子文件的名称。

GetLastAccessTime:返回上次访问指定文件或文件夹的创建日期和时间。

GetLastWriteTime:返回上次写入指定文件或文件夹的创建日期和时间。

GetLogicalDrives:检索计算机中的所有驱动器,例如A:、C:等等。

GetParent:获取指定路径的父文件夹,包括绝对路径和相对路径。

Move:将指定文件或文件夹及其内容移动到新位置。

SetCreationTime:设置指定文件或文件夹的创建日期和时间。

SetCurrentDirectory:将应用程序的当前工作文件夹设置指定文件夹。

SetLastAccessTime:设置上次访问指定文件或文件夹的日期和时间。

SetLastWriteTime:设置上次写入指定文件夹的日期和时间。

3、下面通过程序实例来介绍其主要方法:

(1)目录创建方法:Directory.CreateDirectory

方法声明如下:public  static  DirectoryInfo  CreateDirectory(string path);

下面的代码演示在c:\Dir1文件夹下创建名为Dir2子文件夹。

Directory.CreateDirectory(@"c:\Dir1\Dir2");

(2)目录属性设置方法:DirectoryInfo.Atttributes

下面的代码设置c:\Dir1\Dir2目录为只读、隐藏。与文件属性相同,目录属性也是使用FileAttributes来进行设置的。

DirectoryInfo  DirInfo=new  DirectoryInfo(@"c:\Dir1\Dir2");

DirInfo.Atttributes=FileAttributes.ReadOnly

FileAttributes.Hidden;

(3)目录删除方法:Directory.Delete

该方法声明如下:public  static  void  Delete(string  path,bool  recursive);

下面的代码可以将c:\Dir1\Dir2目录删除。Delete方法的第二个参数为bool类型,它可以决定是否删除非空目录。如果该参数值为true,将删除整个目录,即使该目录下有文件或子目录;若为false,则仅当目录为空时才可删除。

Directory.Delete(@"c:\Dir1\Dir2",true);

(4)目录移动方法:Directory.Move

该方法声明如下:public  static  void  Move(stringsourceDirName,string destDirName);下面的代码将目录c:\Dir1\Dir2移动到c:\Dir3\Dir4。

File.Move(@"c:\Dir1\Dir2",@"c:\Dir3\Dir4");}

(5)获取当前目录下所有子目录:Directory.GetDirectories

该方法声明如下:public  static  string[] GetDirectories(string path;);下面的代码读出c:\Dir1\目录下的所有子目录,并将其存储到字符串数组中。

string [] Directorys;   Directorys= Directory. GetDirectories (@"c:\Dir1");

获得所有逻辑盘符:

string[] AllDrivers=Directory.GetLogicalDrives();

(5)判断目录是否存在方法:Directory.Exist

该方法声明如下:public staticbool Exists(string path;);

下面的代码判断是否存在c:\Dir1\Dir2目录。

if(File.Exists(@"c:\Dir1\Dir2"))//判断目录是否存在