Fly
Believe Me I Can Fly , I Am Singing In The Sky

文件操作常用相对类:

 File // 操作文件,静态类。

 FileInfo //文件类,用来描述一个文件对象,(获取指定目录下的所有文件,返回一个数组)  

Directory  //操作目录(文件夹),静态类。

 DirectoryInfo //文件夹的一个“类”,用来描述一个文件夹(目录)对象。返回一个DirectoryInfo数组,其用法与Directory相似。 

 Path // 对文件路径的操作。

 Stream // 文件流,抽象类   

     FileStream // 文件流  

     MemoryStream//内存流   

     NetWorkStream//网络流   

     StreamReader //快速读取文本文件   

     StreamWriter //快速写入文本文件

1 Path 类中常用的方法  

  注意:要引用命名空间 using System.IO;  

  -> ChangeExtension()   //改变文件扩张名  

     例:    string pathTxt = @"D:\temp.txt";            

         string result= Path.ChangeExtension(pathTxt, ".doc");    

            //注意:此方法只是对于次字符串的操作,若是认为将会把原有文件的扩展名修改了,那就错了。

   -> Combine()   //将路径和文件问拼接;  

     例:    string path = Path.Combine(@"D:\", "temp.txt");    

       //此方法在使用时会自动检测路径或者文件名前是否加"\",并会自动处理,所以写不写"\"不会影响结果  

   -> GetDirectoryName() //获得目录名称  

   -> GetFileName() //获得文件名称

      例:    string muLu = Path.GetDirectoryName(@"D:\temp.txt");  //结果 D:\   

        string wenJian = Path.GetFileName(@"D:\temp.txt");    //结果 temp.txt  

   -> GetExtension()    string wenJianExt = Path.GetExtension(@"D:\temp.txt");  // 结果 .txt  

   -> GetFileNameWithoutExtension() //获得没有扩展名的文件名   

        string wenJianExt = Path.GetFileNameWithoutExtension(@"D:\temp.txt"); //结果 temp  

   -> GetFullPath() //根据相对路径获得全路径    string res= Path.GetFullPath("vsbuding");     

       //注释:“vsbuding“是我的一个D盘上一个net文件夹中的一个文件夹,注意前面不要加"\"  

   -> GetPathRoot() //获取路径的根目录    string res = Path.GetPathRoot(@"D:\lianxi\第八天代码\作业"); //结果 D:\  

   -> GetRandomFileName()  -> GetTempFileName() //获取临时临时文件文件名;    

       string tmpName = Path.GetTempFileName();  

      -> GetTempPath() //获取临时文件的目录:    

       string tmp = Path.GetTempPath();  -> HasExtension()  //判断是否有扩展名;  

  -> IsPathRooted() //给定一个字符串路径,判断是相对路径还是绝对路径;

2 Directory 常用方法:  

  注意:要引用命名空间 using System.IO;  

     -> Exists()  //判断磁盘上是否有该目录    

       bool result =  Directory.Exists("D:\\net");  

     -> Delete()  //删除该目录   

                    bool result =  Directory.Delete("D:\\net");    //注意如果目录下还有子目录和文件是不能删除的:   

   ->  bool result =  Directory.Delete("D:\\net",true);    //次重载可以删除目录下还有子目录和文件的文件夹(目录)。称为递归删除  

     -> GetFiles()  //获得指定目录下得文件名称(只是一级文件)    

       string[] res2= Directory.GetFiles(pathTxt);    

              =========  

         string[] res2= Directory.GetFiles(pathTxt,".txt"); //获得目录下得子 .txt 文件   

               =========    

       string[] res2= Directory.GetFiles(pathTxt,".txt",SearchOption.AllDirectories);    //获取目录下所有的子文件(不仅仅是一级文件)  

  -> GetFileSystemEntries()  //获得目录下所有子文件名称    

       string [] res3= Directory.GetFileSystemEntries(pathTxt);  

      ->   string res1= Directory.GetCurrentDirectory();//获得当前的工作目录  

  -> CreateDirectory()  //在指定的路径创建文件夹    

       DirectoryInfo dir = Directory.CreateDirectory(@"D:\net\2");  

  ->   string[] dirs = Directory.GetDirectories(path);  //获取指定目录下的直接子目录                      

    ->   string[] dirs = Directory.GetDirectories(path, ".txt", SearchOption.AllDirectories);    

  -> Directory.Move()   //移动某个文件夹 (类似剪切复制)    

        Directory.Move(@"C:\DRIVERS\W2K\ss", @"C:\DRIVERS\W2K\King");    

      //注意:不可跨磁盘操作 3 File  using System.IO;  

   ->File.Create("路径")  //在指定位置创建文件  

   ->File.Copy() //文件拷贝;   

      File.Copy("要拷贝的文件","目标文件按",true) //是否允许覆盖,  

   ->File.Exists() //判断文件是否存在,  

   ->File.Move()    

      File.Move("要移动的文件","新的位置")

      //将文件移动到新位置并指定新文件名的选项.目录不宽容跨磁盘操作,文件可以跨磁盘造作  

   ->File.Delete() //删除文件,如果文件不存在,不会报错;     

          //注意:如果删除的是目录(文件夹),如果不存在就会报错

     ->File.ReadAllLines()  //读取一整行,返回string[] 

   ->File.WriteAllLines("路径",要写入的字符串数组)  

   ->File.WriteAllText()  //创建文件写入指定的字符串。如果已经存在此文件,就将覆盖原文件  

     例:    string[] names = { "sk", "jk", "yzk" };            

        //File.WriteAllLines(@"c:\names.txt", names); //是分行写入            

        File.WriteAllText(@"c:\names.txt", "sukun,jiangkun,yangzhongke");

          //写入的内容个不分行,如果目标文件存在就会覆盖原文件            

         Console.WriteLine("ok");            

         Console.ReadKey();  

  ->File.ReadAllBytes("路径") //读取文件,返回byte[],把文件作为二进制来处理,  

  ->File.WriteAllBytes("路径",byte[] bt) //创建一个文件,并写入指定的字节数组,如果目标文件已存在,将会覆盖原文件。

4 FileStream   (快速的读写文件)

     注意:要引用命名空间 using System.IO;  

  ->Flus()   //清空缓冲区  

     例:======读取文件,然后在写入另一个文件【读字节的方式】======   

       string path = @"D:\1.txt";        

        FileStream file = new FileStream(path, FileMode.Open,FileAccess.Read);    //创建一个文件流,要读的文件路径,FileMode.Open打开,FileAccess.Read读取         

       FileStream wFile = new FileStream(@"D:\2.txt", FileMode.Open, FileAccess.Write);    //创建一个文件流,要写入的文件路径,FileMode.Open,打开 FileAccess.Write写入   

      //因为当使用后文件流需要Close() 关闭 和Dispose()释放非托管资源 方法,为了方便和不会忘记调用,可以使用using      

       using(file)           

       {            

         using (wFile)             

          {    

             int res = -1;  //此变量是查看是否读出字节,没有字节读出是为-1      

              do  

               {                       

                  res = file.ReadByte();  //从文件中读出一个字节,并将读取位置提升一个字节。因此返回类型是int                                 if (res!=-1)                        

                 {                           

                    wFile.WriteByte(Convert.ToByte(res));  

                                }

                            } while (res != -1);     

          }          

        }            

        string path = @"D:\TDDOWNLOAD\u=2546012012,2031257426&fm=3&gp=0.jpg";   

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   

       using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))            

       {      

          using (FileStream writes = new FileStream(@"D:\2.jpg", FileMode.Create, FileAccess.Write))   

             {       

             byte[] bs = new byte[10];       

               int mod = 0;        

              while ((mod = file.Read(bs, 0, bs.Length)) != 0)       

               {        

                 writes.Write(bs, 0, mod);       

               }       

           }           

        }

 ->  byte[] bs = new byte[10];  

   int mod = file.Read(bs, 0, bs.Length)  //一次性要读的字节数组,在数组中的什么位置开始读取字节(是数组的偏移量),要读得长度,写入给缓冲区

++++++++++++++++++

这是本人的小总结,还未完善,如是里面有错误的,希望阅读此文的高手指出

posted on 2012-07-02 23:58  梁彦伟  阅读(635)  评论(0)    收藏  举报