文件以及目录常用操作

            // 由于File.Create方法默认向所有用户授予对新文件的完全读/写访问权限,
            //所以文件是用读/写访问权限打开的,必须关闭后才能由其他应用程序打开。
            //为此,所以需要使用FileStream类的Close方法将所创建的文件关闭。

            //File只能被一个流读写,用完需要关闭。

 


            //FileStream和Stream的区别
            //FileStream对象表示在磁盘或网络路径上指向文件的流。
            //这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。
            //这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据.
            DirectoryInfo di = Directory.CreateDirectory("D:\\tempFiles");

            // craete 对目录是否存在,需要进行判定;如果创建的文件存在,返回同名文件;文件流用完需要关闭
            FileStream fs = File.Create(@"D:\tempFiles\test3.txt");
            fs.Close();
           
            //字符串和字节数组转换
            Encoding encoder = Encoding.UTF8;//
            byte[] info = encoder.GetBytes("HelloWorld!\r\n1");//字符串转为字节数组
            string strOrign = Encoding.UTF8.GetString(info);//字节数组转为字符串
           
            //生成文件换行
            string strNewLine = "\r\n";//一定是\r\n  反了就错了
            strNewLine = System.Environment.NewLine;//等价与 /r/n

            //open    FileMode.Append 如果有则打开,如果没有则创建。
            FileStream fs1 = File.Open(@"D:\tempFiles\test5.txt", FileMode.Open);
         
            //wirte字节
            fs1.Position = fs1.Length;
            fs1.Write(info, 0, info.Length);

            //read字节
            fs1.Position = 0;
            byte[] readInfo = new byte[fs1.Length];
            fs1.Read(readInfo, 0, (Int32)fs1.Length);
           
            fs1.Close();

            //exists delete
            File.Exists("路径");
            File.Delete("路径");


            //copy overwrite 表示文件存在时,是否可以覆盖;

            File.Copy(@"D:\tempFiles\test5.txt", @"D:\tempFiles\test5.txt", false);//同名报错
            File.Copy(@"D:\tempFiles\test5.txt", @"D:\tempFiles\test5.txt", true);//可以覆盖

            //move 当文件存在是会报错,需要和exists连用
            File.Move(@"D:\tempFiles\test5.txt", @"D:\tempFiles\test.txt");
           

            //追加写字符串
            StreamWriter sw = new StreamWriter(@"D:\tempFiles\test2.txt", true);
            sw.Write("HelloWorld!\n\r1");
            sw.Close();

            //初次创建文件并写字符串
            FileStream fs2 = File.Create(@"D:\test.txt");
            StreamWriter sw2 = new StreamWriter(fs2);
            sw2.Write("HelloWorld!\r\n1");
            sw2.Close();
            sw2.Close();
            fs2.Close();

            //读取文件字符形式
            StreamReader sr = new StreamReader(@"D:\test.txt");
            string strLine = sr.ReadLine();
            while (!string.IsNullOrEmpty(strLine))
            {
                Console.WriteLine(strLine);
                strLine = sr.ReadLine();
            }
          
            //文件属性
            FileInfo fi = new FileInfo(@"D:\test.txt");
            StreamWriter sw3 = fi.AppendText();
            DateTime dt = fi.CreationTime;//创建时间  2013--7-7 16:07:08
            DateTime dt2 = fi.LastWriteTime;//最后一次写入时间 2013--7-7 16:35:08
            string FileExtension = fi.Extension;//扩展名 .txt
            string fullname = fi.FullName;//完整目录 D:\test.txt
            DirectoryInfo dir = fi.Directory;  //父级目录对象 D:\
            string dirName = fi.DirectoryName;  //父级目录字符串 D:\


         
            // 目录

            DirectoryInfo dir2 = Directory.CreateDirectory(@"D:\temp2");//当存在时,返回目录
            Directory.Delete(@"D:\temp2", true);//true 表示可以删除子目录以及子文件
            bool isExist = Directory.Exists(@"D:\temp2");
            DateTime dt4 = Directory.GetCreationTime(@"D:\temp2");
            Directory.Move(@"D:\temp2", @"D:\temp3");//移动

 

            //目录查询
            // 得到系统目录
            DriveInfo[] DriveList = DriveInfo.GetDrives(); // 返回 C:\ D:\ 等


            //得到目录下的文件集合

            // 通过Diertory 得到集合
            foreach (string item in Directory.GetFiles(@"D:\")) //返回的是 D:\test.test  返回的是全路径
                Console.WriteLine(item);
            foreach (string item in Directory.GetDirectories(@"D:\")) //返回的是 D:\test.test  返回的是全路径
                Console.WriteLine(item);

            //通过DiroryInfo得到集合
            DirectoryInfo dir3 = new DirectoryInfo(@"D:\");
            FileInfo[] fileInfos = dir3.GetFiles();
            foreach (FileInfo fi3 in fileInfos)
                Console.WriteLine(fi3.FullName + fi3.Name + "\r\n\r\n");

            DirectoryInfo[] dirs = dir3.GetDirectories();
            foreach (DirectoryInfo item in dirs)
                Console.WriteLine(item.FullName + item.Name);

 

            //遍历目录下所有文件

            GetFiles(@"D:\");//显示每一个文件名           

           public static void GetFiles(string path)
          {

              //如果是文件的话
              if (File.Exists(path))
              {
                return;
              }
              //如果是目录的话
              if (Directory.Exists(path))
              {
                foreach (FileInfo item in new DirectoryInfo(path).GetFiles())
                    Console.WriteLine(item.FullName);
                foreach (DirectoryInfo item in new DirectoryInfo(path).GetDirectories())
                    GetFiles(item.FullName);
                return;

             }
         }

 

            //对路径字符串的处理
            string path = Path.Combine(@"D:\", @"test.txt");
            Path.GetDirectoryName(path);//D:\
            Path.GetExtension(path);//.txt
            Path.GetFileName(path);//test.txt
            Path.GetFullPath(path);//D:\test.txt
            Path.HasExtension(path);//true

           

posted @ 2013-07-07 18:18  youhumian  阅读(303)  评论(0编辑  收藏  举报