C#文件操作

本文详细介绍了C#中关于文件夹创建、Path路径配置、文件读写、磁盘操作和文档序列化的常用函数和示例代码,包括Directory和Path类的方法,如CreateDirectory、GetPathRoot、ReadAllLines等,以及二进制、XML和Json的序列化与反序列化操作。
摘要由CSDN通过智能技术生成

目录

一、文件夹创建

二、Path 路径配置

三、文件读写

四、磁盘操作

五、文档序列化


一、文件夹创建

常用函数:

Directory.Exists(path)                       -- 此文件夹是否存在
Directory.CreateDirectory(path)     -- 创建文件夹
Directory.Move(path_a, path_b)     -- 文件夹剪切
Directory.Delete(path)                       -- 只可删除空文件夹,若删除非空文件夹,会报异常
Directory.Delete(path, true)              -- 删除文件夹,包括里面的文档 

例程: 

internal class Program
{
    static void Main(string[] args)
    {
        string path_A = @"C:\\Temp\\A";
        string path_B = @"C:\\Temp\\B";

        if (!Directory.Exists(path_A)) //若此文件夹不存在
        {
            Directory.CreateDirectory(path_A); //创建此文件夹
            Directory.Move(path_A, path_B); //A文件夹剪切成B
            Directory.Delete(path_B, true); //删除B文件夹 
        }
    }
}

二、Path 路径配置

 常用函数:

Path.GetPathRoot(path)               -- 获取根目录
Path.GetDirectoryName(path)     -- 获取文件路径名
Path.GetFileNameWithoutExtension(path) -- 获取文件名 不包含后缀
Path.GetExtension(path)               -- 获取文件后缀
Path.GetFileName(path)                 -- 获取文件名 包含后缀
Path.GetFullPath(path)                   -- 获取文件绝对路径
Path.ChangeExtension(path, "text") -- 修改文件后缀
Path.GetExtension(path)                -- 获取文件后缀
Path.Combine("C:\\搜狗浏览器\\", "aaaa.txt") -- 合并文件路径

Path.GetRandomFileName()           -- 获取随机文件名+后缀
Path.PathSeparator                           -- 分隔符
Path.VolumeSeparatorChar            -- 冒号
Path.AltDirectorySeparatorChar    -- 反斜杠

例程: 

internal class Program
{
    static void Main(string[] args)
    {
        string path = @"C:\搜狗浏览器\ldinst-41.exe.ttd";

        //获取根目录
        Console.WriteLine(Path.GetPathRoot(path)); //结果显示: C:\

        //获取文件路径名
        Console.WriteLine(Path.GetDirectoryName(path)); //结果显示: C:\搜狗浏览器

        //获取文件名 不包含后缀
        Console.WriteLine(Path.GetFileNameWithoutExtension(path));//结果显示: ldinst-41.exe

        //获取文件后缀
        Console.WriteLine(Path.GetExtension(path));//结果显示: .ttd

        //获取文件名 包含后缀
        Console.WriteLine( Path.GetFileName(path)); //结果显示: ldinst-41.exe.ttd

        //获取绝对路径
        Console.WriteLine(Path.GetFullPath(path));//结果显示: C:\搜狗浏览器\ldinst-41.exe.ttd

        //修改文件后缀
        Console.WriteLine(Path.ChangeExtension(path, "text"));//结果显示: C:\搜狗浏览器\ldinst-41.exe.text

        //合并路径
        Console.WriteLine(Path.Combine(Path.GetDirectoryName(path), "aaaa.txt"));//结果显示: C:\搜狗浏览器\aaaa.txt

        //获取随机文件名+后缀
        Console.WriteLine(Path.GetRandomFileName()); //结果显示: vjzle4pq.1v0

        Console.WriteLine(Path.PathSeparator); //分隔符
        Console.WriteLine(Path.VolumeSeparatorChar);//冒号
        Console.WriteLine(Path.AltDirectorySeparatorChar); //反斜杠

    }
}

三、文件读写

 常用函数:

File.Create(path)               -- 文档创建并清空
File.Copy(path_1,path_2) -- 文档复制
File.Delete(path_2)           -- 文档删除
File.Move(path_1,path_2) -- 文档剪切
File.AppendText(path)     -- 文档内容追加
File.ReadAllLine(path)     -- 文档读取所有行
File.ReadAllText(path)     -- 读取整个文档

FileStream.Write(bytes,0,bytes.Length) -- 一个个写
FileStream.Flush()   -- 刷新

StreamWriter.WriteLine(text) -- 写一行
StreamWrite.BaseStream.Write(bytes,0,bytes.Length) -- 一个个写
StreamWrite.Flush()  -- 刷新

例程: 

internal class Program
{
    static void Main(string[] args)
    {

        string path = "C:\\Temp\\A.txt";
        using (FileStream fs = File.Create(path))//创建并清空原有数据
        {
            byte[] bytes = Encoding.UTF8.GetBytes("我最最最爱你,你不知道吗\r\n");
            fs.Write(bytes, 0, bytes.Length); //一个个写
            fs.Flush();

        }
        using (StreamWriter sw = File.AppendText(path)) //流写入 -- 追加
        {
            string text = "我是你.......";
            sw.WriteLine(text);

            byte[] bytes = Encoding.UTF8.GetBytes("eeeeeeeee\r\n");
            sw.BaseStream.Write(bytes, 0, bytes.Length); //一个个写

            sw.Flush();
        }
        //File.OpenRead(path);等价
        using (FileStream fs = new FileStream(path, FileMode.Open)) //分批读取
        {
            byte[] bytes = new byte[1 * 1024];
            int count = fs.Read(bytes, 0, bytes.Length);
            string date = Encoding.UTF8.GetString(bytes, 0, count);
            Console.WriteLine(date);
        }

        foreach (string item in File.ReadAllLines(path)) //读取所有行,遍历
        {
            Console.WriteLine(item);
        }

        Console.WriteLine(File.ReadAllText(path)); //读取整个文本

        string path_1 = "C:\\Temp\\A.txt";
        string path_2 = "C:\\Temp\\B.txt";
        File.Copy(path_1, path_2); //文档复制
        File.Delete(path_2); //文档删除
        File.Move(path_1, path_2); //文档剪切

    }
}

四、磁盘操作

 常用函数:

DriveInfo.GetDrives() -- 获取当前所有磁盘
drive.IsReady              -- 磁盘是否可用
drive.DriveType          -- 获取磁盘类型
drive.Name                  -- 磁盘名称
drive.TotalSize            -- 磁盘总空间
drive.AvailableFreeSpace -- 磁盘剩余空间

例程: 

internal class Program
{
    static void Main(string[] args)
    {
        foreach (DriveInfo drive in DriveInfo.GetDrives())
        {
            if (drive.IsReady)
            {
                Console.WriteLine($"类型:{drive.DriveType}" +
                                  $"名称:{drive.Name}" +
                                  $"总空间:{drive.TotalSize / 1024 / 1024 / 1024}G " +
                                  $"剩余空间:{drive.AvailableFreeSpace / 1024 / 1024 / 1024} G");
            }
            else
            {
                Console.WriteLine($"类型:{drive.DriveType} is not ready");
            }
        }
    }
}

五、文档序列化

 常用函数:

二进制序列化
    BinaryFormatter.Serialize(stream, text)  -- 序列化成二进制,写入文档
    BinaryFormatter.Deserialize(stream)      --反序列化读出文档
    
XML序列化
    XmlSerializer.Serialize(stream, text)  -- 序列化成XML格式,写入文档
    XmlSerializer.Deserialize(stream)      --反序列化读取
    
Json序列化
    JsonConvert.SerializeObject(text)         -- 序列化
    JsonConvert.DeserializeObject(result) -- 反序列化

例程: 

internal class Program
{
    static void Main(string[] args)
    {
        string path = @"C:\Temp\C.txt";
        string text = "凄凄切切QQ群www";

        //---------------二进制序列化------------------------
        using (Stream stream = File.OpenWrite(path))
        {
            BinaryFormatter bf = new BinaryFormatter();
            //序列化文档
            bf.Serialize(stream, text);
        }
        using (Stream stream = File.OpenRead(path))
        {
            BinaryFormatter bf = new BinaryFormatter();
            //反序列化读取
            Console.WriteLine(bf.Deserialize(stream));
        }

        //---------------XML序列化------------------------
        using (Stream stream = File.OpenWrite(path))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(string));
            //序列化文档
            serializer.Serialize(stream, text); 
        }
        using (Stream stream = File.OpenRead(path))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(string));
            //反序列化读取
            Console.WriteLine(serializer.Deserialize(stream));
        }
        //---------------Json序列化------------------------
        string result = JsonConvert.SerializeObject(text); //序列化
        Console.WriteLine(result);

        Console.WriteLine(JsonConvert.DeserializeObject(result)); //反序列化
    }
}

如有错误,烦请批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值