使用File类、StreamRead和StreamWrite读写数据、以及Path类操作文件路径和Directory

1、File类的概念:

File类,是一个静态类,主要是来提供一些函数库用的。静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件。

File类方法的参量很多时候都是路径path。File的一些方法可以返回FileStream和StreamWriter的对象。可以 和他们配套使用。System.IO.File类和System.IO.FileInfo类

主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间。

一、File类常用的操作方法

1、创建文件方法

//参数1:要创建的文件路径

File.Create(@"D:TestDebug1测试.txt")

2、打开文件方法

 //参数1:要打开的文件路径,参数2:打开的文件方式

File.Open(@"D:TestDebug1测试.txt",FileMode.Append)

3、追加文件方法

 //参数1:要追加的文件路径,参数2:追加的内容

File.AppendAllText(@"D:TestDebug1测试.txt","哈哈");

4、复制文件方法

 //参数1:要复制的源文件路径,参数2:复制后的目标文件路径,参数3:是否覆盖相同文件名
 File.Copy(@"D:TestDebug1测试.txt", @"D:TestDebug2测试1.txt", true);

5、移动文件方法

 //参数1:要移动的源文件路径,参数2:移动后的目标文件路径
File.Move(@"D:TestDebug1测试.txt", @"D:TestDebug3测试2.txt");

6、删除文件方法

 //参数1:要删除的文件路径
 File.Delete(@"D:TestDebug1测试.txt");

7、设置文件属性方法

//参数1:要设置属性的文件路径,参数2:设置的属性类型(只读、隐藏等)
File.SetAttributes(@"D:TestDebug1测试.txt", FileAttributes.Hidden);

8、 判断文件是否存在的方法:File.Exist

public static bool Exists(string path); 

9、使用File类读取数据

 1         /// <summary>
 2         /// 使用File类读取数据
 3         /// </summary>
 4         /// <param name="path">要读取文件的路径</param>
 5         /// <returns>返回读取的TXT文件的字符串</returns>
 6         public static string GetString(string path)
 7         {
 8             byte [] buffer=  File.ReadAllBytes(path);
 9             string str = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
10             return str;
11         }    

10、使用File类写入数据

 1         /// <summary>
 2         /// 使用file类写入数据
 3         /// </summary>
 4         /// <param name="path">要写入文件的路径</param>
 5         /// <param name="str">要写入的字符串</param>
 6        public  static void write(string path,string str)
 7         {
 8             byte[] buffer = Encoding.UTF8.GetBytes(str);
 9             File.WriteAllBytes(path,buffer);
10 
11         } 

此外,File类对于Text文本提供了更多的支持。


· AppendText:将文本追加到现有文件
· CreateText:为写入文本创建或打开新文件
· OpenText:打开现有文本文件以进行读取

二、streamRead与streamWrite

1、概念:

2、使用streamWrite写入数据

     /// <summary>
        /// 要写入文件的路径
        /// </summary>
        /// <param name="path"></param>
        public static void Write(string path,string str)
        {
            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.Write(str);
            }
        }

3、使用streamRead读取数据

 1        /// <summary>
 2         /// 要读取文件的路径
 3         /// </summary>
 4         /// <param name="path"></param>
 5         /// <returns></returns>
 6         public static string Read(string path)
 7         {
 8             StringBuilder sb = new StringBuilder();
 9             using (StreamReader sr = new StreamReader(path,Encoding.UTF8))
10             {
11                 while(!sr.EndOfStream)
12                 {
13                     sb.Append(sr.ReadLine());
14                 }
15                 return sb.ToString();
16             }
17         }

三、对文件路径操作的Path类

1、概念:

对包含文件或目录路径信息的 String 实例执行操作。 这些操作是以跨平台的方式执行的。

路径是提供文件或目录位置的字符串。

路径可以包含绝对或相对位置信息。

若要确定当前目录,请调用 Directory.GetCurrentDirectory。

Path 类的所有成员都是静态的,因此无需具有路径的实例即可被调用。

常用方法:

 

Path.GetFullPath 方法

返回指定路径字符串的绝对路径

——语法:

 public static string GetFullPath(

       string path

)

——参数

path

类型:System.String

要为其获取绝对路径信息的文件或目录。

——返回值

类型:System.String

path 的完全限定的位置,例如“C:MyFile.txt”。

备注:path 指定的文件或目录不需要存在。 例如,如果 c: emp ewdir 是当前目录,则对文件名(例如 test.txt)调用 GetFullPath 将返回 c: emp ewdir est.txt。 该文件不需要存在。

Path.GetFileName 方法

返回指定路径字符串的文件名和扩展名。

与GetFullPath 方法 进行逆操作

Path.GetDirectoryName 方法

返回指定路径字符串的目录信息。

——语法:

public static string GetDirectoryName(

       string path

)

——参数

path

类型:System.String

文件或目录的路径。

——返回值

类型:System.String

path 的目录信息,如果 path 表示根目录或为 null,则该目录信息为 null。 如果 path 没有包含目录信息,则返回 String.Empty。

——备注:

由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar,因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。 例如,将路径“C:DirectorySubDirectory est.txt”传入 GetDirectoryName 方法将返回“C:DirectorySubDirectory”。 将该字符串“C:DirectorySubDirectory”传入 GetDirectoryName 将导致返回“C:Directory”。

Path.Combine 方法 (String, String)

将两个字符串组合成一个路径。返回字符串。

最多支持四个路径的组合

 /*
            1.更改路径字符串的扩展名
            public static string ChangeExtension(string path,string extension)
            参数:
            path(String):要修改的路径信息.
            extension(String):新的扩展名。
            返回值:
            String,修改后的路径字符串。*/            
            //如果 extension 是 null,则返回的字符串包含指定的路径,其扩展名已移除(点还在)。
            string s1 = Path.ChangeExtension(@"D:wang1wang.txt", "");//返回D:wang1wang.
            Console.WriteLine(s1);
            //如果 path 不具有扩展名,并且 extension 不是 null,则返回的路径字符串包含 extension,它追加到 path 的结尾。
            string s2 = Path.ChangeExtension(@"D:wang1wang", ".dll");//返回D:wang1wang.dll
            Console.WriteLine(s2);  
            //仅更改路径字符串中的扩展名,并不会改变实际文件的扩展名或者目录。


            /*
            2.  合并两个字符路径字符串
            public static string Combine(string path1,string path2)
            参数:
            path1(String) ,第一个路径
            path2(String), 第二个路径
            返回值:
            String ,合并后的路径字符串。
            常见的合并操作为:
     */       
            string path3 = @"c:目录";
            string path4 = @"install.txt";
            string s5 = Path.Combine(path3, path4);
            Console.WriteLine(s5);
            //返回:"c:目录install.txt"

            /*
            3.获取指定路径字符串的目录信息
            public static string GetDirectoryName(string path)       
*/
        
            Console.WriteLine(Path.GetDirectoryName(@"d:wang3wangwang.text"));//返回文件的目录名 

            //4.获取指定路径字符串的扩展名
            Console.WriteLine(Path.GetExtension(@"d:wangwang.txt"));

四、Directory 

公开用于创建、移动和枚举通过目录和子目录的静态方法。无法继承此类。

——备注

--------------------------------------------------------------------------------

将 Directory 类用于典型操作,如复制、移动、重命名、创建和删除目录。也可将 Directory 类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime 信息。

由于所有的 Directory 方法都是静态的,所以如果只想执行一个操作,那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。大多数 Directory 方法要求当前操作的目录的路径。

Directory 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象,可考虑改用 DirectoryInfo 的相应实例方法,因为并不总是需要安全检查。

常用方法:

 

Directory.GetFiles 方法 (String)

返回指定目录中的文件的名称。

命名空间:System.IO

——语法:

public static string[] GetFiles (

       string path

)

——参数

path

将从其检索文件的目录。

——返回值

指定目录中文件名的 String 数组。文件名包含完整路径。

——备注:

文件名包含完整路径。

此方法与将星号 (*) 指定为搜索模式的 GetFiles 方法相同。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录,请参见 GetCurrentDirectory。

path 参数不区分大小写。

Directory.GetFiles 方法 (String, String)   //重载的

 

返回指定目录中与指定搜索模式匹配的文件的名称。

——语法:

public static string[] GetFiles (

       string path,

       string searchPattern

)

——参数

path

要搜索的目录。

searchPattern

要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点(“..”)结束,不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点(“..”),也不能包含 InvalidPathChars 中的任何字符。

——返回值

一个 String 数组,它包含指定目录中与指定搜索模式匹配的文件的名称。文件名包含完整路径。

——备注:

文件名包含完整路径。

在 searchPattern 中允许使用以下通配说明符。

通配符

*

 零个或多个字符。

?

 正好一个字符。

 通配说明符以外的字符表示它们自己。例如,searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。

 

其它常用 Directory 成员

——公共方法:

CreateDirectory  已重载。 创建指定路径中的所有目录。

Delete    已重载。 删除指定的目录。 

Equals   已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)

GetCreationTime  获取目录的创建日期和时间。

GetCurrentDirectory  获取应用程序的当前工作目录。 

GetDirectories       已重载。 获取指定目录中子目录的名称。 

GetFileSystemEntries  已重载。 返回指定目录中所有文件和子目录的名称。

GetParent  检索指定路径的父目录,包括绝对路径和相对路径。 

GetType   获取当前实例的 Type。 (从 Object 继承。)

Move  将文件或目录及其内容移到新位置。 

ToString   返回表示当前 Object 的 String。 (从 Object 继承。)

=========================================================================

以下代码段是本人的一点实践,

检索某文件夹下所有包含检索关键字的文件,打印到屏幕:

class Program
    {
        static void Main(string[] args)
        {
            //检索某文件夹下所有包含检索关键字的文件,打印到屏幕
            #region test
            //   Directory

            //string path = Path.GetFullPath("1.txt");
            //Console.WriteLine(path);
            //string tem=Path.GetFileName(path);
            //Console.WriteLine(tem);
            //Console.ReadKey(); 
            #endregion
            string path = (@"F:pdf"); //要找的目录
            string reg = @".*美.*..*";   //正则表达式
            //string reg = @".+美.+..+"; 
            string[] filename = Directory.GetFiles(path);//Directory 从磁盘读取文件名存入字符串数组

            // MatchCollection mc=null;
            for (int i = 0; i < filename.Length; i++)
            {

                string temp = Path.GetFileName(filename[i]);   //把文件的完整路径转换成 文件名.扩展名 形式
                MatchCollection mc = Regex.Matches(temp, reg);  //正则表达式进行匹配,

                //if (mc != null)  //mc 始终不为null,所以始终打印
                //{
                //    Console.WriteLine(filename[i]);
                //}


                foreach (Match t in mc)
                {
                    Console.WriteLine(filename[i]);//打印结果,完整路径
                    Console.WriteLine(t);  //打印结果,文件名.扩展名 形式
                }


                //for ( i = 0; i < mc.Count ; i++)
                //{
                //    Console.WriteLine(filename[i]);
                //}
            }
                Console.ReadKey();
            
        }
    }
原文地址:https://www.cnblogs.com/hudean/p/11717072.html