首页 > 编程语言 >C#的文件操作

C#的文件操作

时间:2022-10-27 12:35:10浏览次数:47  
标签:文件 Console C# FileStream WriteLine using 操作 txt

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 文件
{
    class FileTest
    {
        //using释放非托管资源
        #region Path类的使用
        /// <summary>
        /// Path类
        /// </summary>
        public static void MPath()
        {
            string str = @"D:\工作\文件测试\test001.txt";
            //获取文件名
            Console.WriteLine(Path.GetFileName(str));
            //获取文件名但是不包含文件扩展名
            Console.WriteLine(Path.GetFileNameWithoutExtension(str));
            //获取文件的扩展名
            Console.WriteLine(Path.GetExtension(str));
            //获取文件所在的全路径
            Console.WriteLine(Path.GetFullPath(str));
            //连接两个字符串作为路径
            Console.WriteLine(Path.Combine(@"D:\工作\文件测试", "test001.txt"));
        }
        #endregion
        #region File类的使用(创建、删除、复制、移动)
        /// <summary>
        /// File类
        /// </summary>
        public static void MFile()
        {
            File.Create(@"D:\工作\文件测试\test001.txt");
            Console.WriteLine("创建成功!");
            File.Delete(@"D:\工作\文件测试\test001.txt");
            Console.WriteLine("删除成功!");
            File.Copy(@"D:\工作\文件测试\test001.txt", @"D:\工作\文件测试\test002.txt");
            Console.WriteLine("复制成功!");
            File.Move(@"D:\工作\文件测试\test001.txt", @"D:\工作\文件测试\test003.txt");
            Console.WriteLine("移动成功");

        }
        #endregion
        #region File类的使用2
        public static void MFileData()
        {
            byte[] buffer = File.ReadAllBytes(@"D:\工作\文件测试\test001.txt");
            #region 支持的编码格式
            //EncodingInfo[] en = Encoding.GetEncodings();
            //foreach (var item in en)
            //{
            //    Console.WriteLine(item.DisplayName);
            //}
            #endregion
            #region 将字节数组转换为字符串
            string s = Encoding.UTF8.GetString(buffer);
            Console.WriteLine(s);
            Console.WriteLine(buffer.ToString());   //有误
            #endregion
            #region 将字节数组写入文件中
            string str = "ClearLove,001,明凯,777";
            //将字符串转换成字节数组
            byte[] bufferw = Encoding.UTF8.GetBytes(str);
            //以字节的形式向计算机中写入文本文件
            File.WriteAllBytes(@"D:\工作\文件测试\test002.txt", bufferw);
            Console.WriteLine("写入成功");
            #endregion
            #region 从文件中读取数据到字节数组中
            byte[] bufferr = File.ReadAllBytes(@"D:\工作\文件测试\test002.txt");
            File.WriteAllBytes(@"D:\工作\文件测试\test003.txt", bufferr);
            Console.WriteLine("复制成功!");
            #endregion
        }

        #endregion
        #region FileStream类的使用
        /// <summary>
        /// FileStream类
        /// </summary>
        public static void MFileStream()
        {
            #region FileStream读取文件
            FileStream fsRead = new FileStream(@"D:\工作\文件测试\test002.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            byte[] buffer = new byte[1024];
            //返回本次实际读取的有效字节数
            int r = fsRead.Read(buffer, 0, buffer.Length);
            //将字节数组中每一个元素按照指定的编码格式解码成字符串
            string s = Encoding.UTF8.GetString(buffer, 0, r);
            //关闭文件流
            fsRead.Close();
            //释放流所占用的资源
            fsRead.Dispose();
            Console.WriteLine(s);
            #endregion

            #region FileStream写入文件
            //使用using
            using (FileStream fsWrite = new FileStream(@"D:\工作\文件测试\EDG.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                byte[] bufferw = Encoding.UTF8.GetBytes(s);
                fsWrite.Write(buffer, 0, bufferw.Length);
            }
            #endregion
        }
        #endregion
        #region FileStream类实现多媒体文件的复制
        public static void MFileStreamData()
        {
            string source = @"D:\工作\文件测试\打上花火.mp3";
            string target = @"D:\工作\测试\打上花火.mp3";
            CopyFile(source, target);
            Console.WriteLine("复制成功!");
        }
        public static void CopyFile(string source, string target)
        {
            //创建一个文件输入流
            using (FileStream fsRead = new FileStream(source, FileMode.OpenOrCreate, FileAccess.Read))
            {
                //创建一个文件输出流
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[12 * 1024 * 1024];
                    while (true)
                    {
                        int r = fsRead.Read(buffer, 0, buffer.Length);
                        if (r == 0) { break; }
                        fsWrite.Write(buffer, 0, r);
                    }
                }
            }
            Console.WriteLine("复制成功!");
        }
        #endregion
        #region FileStream类读取一个文本文件
        public static void MstreamRW()
        {
            using (StreamReader sr = new StreamReader(@"D:\工作\文件测试\test003.txt", Encoding.UTF8))
            {
                using (StreamWriter sw = new StreamWriter(@"D:\工作\文件测试\test002.txt", true))  //true表示追加
                {
                    while (!sr.EndOfStream)
                    {
                        sw.Write(sr.ReadLine());
                    }
                    Console.WriteLine("复制成功!");
                }
            }
        }
        #endregion
        static void Main(string[] args)
        {
            MPath();
            MFile();
            MFileData();
            MFileStream();
            MFileStreamData();
            MstreamRW();
            Console.ReadKey();
        }
    }
}

 

标签:文件,Console,C#,FileStream,WriteLine,using,操作,txt
From: https://www.cnblogs.com/kaede/p/16831805.html

相关文章

  • mysqlmycnf配置项规则查看
    linux怎么查看mysql配置查看方法如下:1、linux下查看mysql的配置文件[root@localhost~]#vi/etc/my.cnf查看mysql是否启动2、mysql的守护进程是mysqld[root@localhost~]#servi......
  • 拯救IT“取数”的业务神器来了,比Excel厉害,零代码,还免费
    今天跟大家讲一个老生常谈又不得不谈的话题:IT部门和业务部门的配合。企业里这两个部门经常互相抱怨,业务部门抱怨IT部门不懂业务,花了大把钱做出来一堆没有价值的页面;IT部门则......
  • Git极简教程(4)--commit级别的操作+总结 commit和push 不一样哦
    Git极简教程(4)--commit级别的操作+总结commit和push不一样哦commit是一个Git的最小改动单位。我们在编辑文件的时候,最小改动单位自然是一个字,但是不必要改一个字就增加......
  • 帝国CMS:如何删除字段某个字符之后的所有字符串?
    需求场景:数据表中,因为采集出现的多余字符,比如不需要的多个标题内容,以下划线分割。我们只需要取第一个下划线之前内容,其余的需要删除。步骤说明:1.进入宝塔后台,进入指定......
  • mysqlmvcc-csdn
    既然MySQL中InnoDB使用MVCC,为什么REPEATABLE-READ不能消除幻读第一个问题:新版本的mysql通过mvcc解决了幻读的问题,所以你没有看到的幻读现象第二个问题:B事务是没有办法看到A......
  • mysqlsource命令导入
    mysqlsource会不会覆盖数据source是执行文件中的SQL语句,是否覆盖、丢失的问题,你要检查你的SQL语句文件,如果文件里面有删除表、建立表的语句,那么现有数据会丢失。另外查看......
  • 浅谈OpenHarmony LiteOS-A内核之基础硬件——中断控制器GIC400
    一、前言​OpenAtomOpenHarmony(以下简称“OpenHarmony”)采用多内核架构,支持Linux内核的标准系统、LiteOS-A的小型系统、LiteOS-M的轻量系统。其中LiteOS-A要求设备具备一定......
  • 狂神说学习笔记:Docker进阶-Docker Compose
    DockerComposehttps://docs.docker.com/compose/简介Composeisatoolfordefiningandrunningmulti-containerDockerapplications.WithCompose,youuseaY......
  • Stack容器
    stack是栈堆容器,是一种“先进后出”的容器。 ......
  • 初识 echarts
    echarts官网特点:1.丰富的可视化类型图表2.多数据格式无需转换3.千万级别数据进行展示4.移动端优化5.多渲染方案,跨平台使用6.深度的交互方案7.动态数据8.绚丽的......