【C#基础】Path类、File类、Directory类

1.Path类(静态类,用于操作文件路径) 
Path类提供的常用静态方法: 
string str = @”C:\Users\YF105\Desktop\new.txt”; 
Path.GetFileName(str);//获取文件名,包含扩展名 
Path.GetFileNameWithoutExtension(str);//获取文件名但不包含文件扩展名 
Path.GetExtension(str);//获取文件扩展名 
Path.GetFullPath(str);//获取文件绝对路径 
Path.GetDirectoryName(str);//获取文件所在文件夹的名称 
Path.Combine(@”C:\Users\YF105\Desktop”, “Text.txt”);//将两个字符串组合成一个路径 
Path.ChangeExtension(str, “.mp3”);//更改文件扩展名

2.File类(操作文件) 
File.Create(@”C:\Users\YF105\Desktop\Test.txt”);//在指定路径创建文件 
File.Copy(@”C:\Users\YF105\Desktop\Test.txt”, @”C:\Users\YF105\Desktop\new.txt”);//复制一个文件 
File.Delete(@”C:\Users\YF105\Desktop\new.txt”);//删除一个文件

文本文件编码:将字符串以怎样的形式保存为二进制 
//UTF-8 
//GB2312:中文简体 
//GBK:包含简体和繁体 
//ASCII 
产生乱码的原因:保存文件所采用的编码格式和打开文件采用的编码格式不一样

a).File.ReadAllBytes和File.WriteAllBytes

byte[] buffer = File.ReadAllBytes(@”C:\Users\YF105\Desktop\test.txt”); 
string str = Encoding.UTF8.GetString(buffer);//将字节数组中的每一个元素按照指定的编码格式解码成字符串 
Console.WriteLine(str);

string str = “岁月别催,皆是皆非,遗憾终成空,遗憾不如梦”; 
byte[] buffer = Encoding.UTF8.GetBytes(str); 
File.WriteAllBytes(“test.txt”, buffer); 
Console.WriteLine(“OK”);

b) 
File.ReadAllLines(@”C:\Users\YF105\Desktop\Test.txt”);//读取每一行,返回一个字符数组 
File.ReadAllText(@”C:\Users\YF105\Desktop\Test.txt”);//读取所有内容,返回一个字符串

c)追加 
File.AppendAllText(@”C:\Users\YF105\Desktop\Test.txt”, “梦里她已去”);

3.文件流FileStream(操作字节)

将创建文件流对象的过程卸载using中,会自动帮我们释放文件流所占用的资源。

        static void Main(string[] args)
        {
            //FileStream读取数据
            using (FileStream fsRead = new FileStream(@"C:\Users\YF105\Desktop\TapToPlace.txt", FileMode.OpenOrCreate, FileAccess.Read))
            {
                byte[] buffer = new byte[1024 * 1024 * 3];
                int r = fsRead.Read(buffer, 0, buffer.Length);
                string str = Encoding.UTF8.GetString(buffer, 0, r);
                Console.WriteLine(str);
            }

            //FileStream写数据
            using (FileStream fsWrite = new FileStream(@"C:\Users\YF105\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                string str = "遗憾终成空,遗憾不如梦,梦里她已去";
                byte[] buffer = Encoding.UTF8.GetBytes(str);
                fsWrite.Write(buffer, 0, buffer.Length);
            }
            Console.WriteLine("写入成功");            
        }

4.FileStream复制多媒体文件

    class Program
    {
        static void Main(string[] args)
        {
            string source = @"C: \Users\YF105\Desktop\虎二 - 光.mp3";
            string target = @"C: \Users\YF105\Desktop\泡泡 - 光.mp3";
            Copy(source, target);
            Console.ReadKey();           
        }

        public static void Copy(string source, string target)
        {
            byte[] buffer = new byte[1024 * 1024 * 5];
            int r;
            using (FileStream fsRead = new FileStream(source, FileMode.OpenOrCreate, FileAccess.Read))
            {
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    while (true)
                    {
                        r = fsRead.Read(buffer, 0, buffer.Length);
                        if (r == 0)
                        {
                            break;
                        }
                        fsWrite.Write(buffer, 0, r);
                    }
                }

            }

        }
    }

5.StreamReader和StreamWriter(操作字符(文本文件))

6.Directory类(操作文件夹)

Directory.CreateDirectory(@”C:\Users\YF105\Desktop\Test”);//在指定路径创建文件夹 
Directory.Delete(@”C:\Users\YF105\Desktop\Test”,true);//删除指定文件夹 
Directory.Move(@”C:\Users\YF105”, @”C:\Users\YF105\Desktop\Test”);//将文件或目录及其内容移动到新位置 
Directory.GetFiles(@”C:\Users\YF105\Pictures”);//获得文件夹下所有文件的全路径 
Directory.GetFiles(@”C:\Users\YF105\Pictures”, “*.jpg”);//获得文件夹下所有的图片文件

7、绝对路径和相对路径
绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件。
相对路径:文件相对于应用程序的路径。在开发中应该去尽量的使用相对路径。


 

猜你喜欢

转载自blog.csdn.net/yf391005/article/details/84251025