文件操作常用相对类File ,FileStream, Directory, Path


文件操作常用相对类:

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) //一次性要读的字节数组,在数组中的什么位置开始读取字节(是数组的偏移量),要读得长度,写入给缓冲区

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

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

优质内容筛选与推荐>>
1、pic
2、心,便这样活着
3、World Finals 2018 感想
4、gsoap开发webservice
5、自己动手、丰衣足食!<面试表>


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号