前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象(二十)-文件操作

面向对象(二十)-文件操作

作者头像
孙寅
发布2020-06-02 15:36:06
3990
发布2020-06-02 15:36:06
举报
文章被收录于专栏:宜达数字宜达数字

所在命名空间: using System.IO

1.Path
代码语言:javascript
复制
            string path = @"C:/Users/Leo/Desktop/123.txt";
            获取路径的扩展名
            string ge = Path.GetExtension(path);
            Console.WriteLine(ge);
            返回文件名与扩展名
            string gf = Path.GetFileName(path);
            Console.WriteLine(gf);
            修改文件的后缀名(扩展名)
            string ce = Path.ChangeExtension(path, ".exe");
            Console.WriteLine(ce);



            string str1 = "D:/";
            string str2 = "super/run";
            // 将字符串组合成一个路径
            string cb = Path.Combine(str1, str2);
            Console.WriteLine(cb);

            返回路径的目录信息
            string gd = Path.GetDirectoryName(path);
            Console.WriteLine(gd);

            拿到路径的文件名,不包括扩展名
            string gfnwe = Path.GetFileNameWithoutExtension(path);
            Console.WriteLine(gfnwe);

            拿到自定字符串的绝对路径
            string gfp = Path.GetFullPath(path);
            Console.WriteLine(gfp);

            // 拿到路径的根路径
            string gpr = Path.GetPathRoot(path);
            Console.WriteLine(gpr);

            // 获取路径是否包含扩展名
            //Console.WriteLine(Path.HasExtension(path));

            // 判断路径是否包含根路径
            Console.WriteLine(Path.IsPathRooted(path));

            // 获取分隔符 ;
            char c = Path.PathSeparator;
            Console.WriteLine("8888"+c);

            // 获取硬盘的分割符 :
            char c1 = Path.VolumeSeparatorChar;
            Console.WriteLine("9999" + c1);

            // 获取路径的分割符 \
            char c2 = Path.DirectorySeparatorChar;
            Console.WriteLine("7777" + c2);

            // 获取路径的分割符在此平台的分隔符号 /
            char c3 = Path.AltDirectorySeparatorChar;
            Console.WriteLine("6666" + c3);

            //char[] cs = Path.InvalidPathChars;
            //foreach (var item in cs)
            //{
            //    Console.WriteLine("1111"+item);
            //}
2. FileInfo 文件操作
  • 1> 实例化一个文件操作对象
代码语言:javascript
复制
FileInfo file = new FileInfo(将要操作的文件路径的字符串);
  • 2> 创建该文件
代码语言:javascript
复制
file.Create(); // 创建一个文件
  • 3> 判断文件是否存在
代码语言:javascript
复制
file.Exists(); 查看指定的文件路径是否存在 
  • 4> 获取文件的大小
代码语言:javascript
复制
file.Length;   Length 获取一个文件的大小(单位是字节)
  • 5> 文件的名称
代码语言:javascript
复制
file.Name;   // 获取一个文件的名字(不包含路径)
  • 6> 复制文件,会保留原有文件
代码语言:javascript
复制
file.CopyTo(将要复制到的路径,需要加复制过来的文件名字。);
file.CopyTo(@"C:\Users\Administrator\Desktop\" + "test.txt"); 
  • 7> 删除一个文件
代码语言:javascript
复制
file.Delete(); // 删除文件
  • 8> 是否是只读
代码语言:javascript
复制
file.IsReadOnly; 
  • 9> 移动文件,会删除原有文件
代码语言:javascript
复制
file.MoveTo(将要移动到的地方); // 将一个文件移动到另一个地方。会删除源文件

项目中的文件操作,要求将项目中添加的文件放到项目输出目录下。 首先将文件拖拽到项目目录下。然后如下操作:

第一步

第二步

3. DirectoryInfo 文件夹操作
  • 1> 实例化文件夹操作对象
代码语言:javascript
复制
DirectoryInfo dir = new DirectoryInfo("将要操作的文件夹的路径");
  • 2> 判断文件夹是否存在
代码语言:javascript
复制
dir.Exists;
Console.WriteLine(dir.Exists);
  • 3> 创建该文件夹
代码语言:javascript
复制
dir.Create();
  • 4> 删除文件夹
代码语言:javascript
复制
dir.Delete(); // 删除该文件夹。 
dir.Delete(True); // 删除该文件夹,并删除该文件夹下所有的子目录和文件
  • 5> 获取该文件夹下的所有文件
代码语言:javascript
复制
dir.GetFiles(); // 返回FileInfo的数组
  • 6> 移动文件夹
代码语言:javascript
复制
dir.MoveTo("将要移动到的路径"); // 将文件夹移动到另一个路径。 会删除原文件 
  • 7> 获取其父目录
代码语言:javascript
复制
dir.Parent; // 获取父目录 返回的是一个DirectoryInfo的对象
  • 8> 获取文件夹的名字
代码语言:javascript
复制
dir.Name; // 获取文件夹的名字。 不包含路径信息
4.File读写文件
  • 中文的编码为gb2312
代码语言:javascript
复制
            string path = @"C:/Users/Leo/Desktop/1234.txt";
            //int range = path.LastIndexOf('/');
            //string st = path.Substring(range + 1);
            //Console.WriteLine(st);
            string[] strs = {"I have a dream!" };
            // 给文件添加行
            File.AppendAllLines(path, strs);
            // 给文件添加字符串
            File.AppendAllText(path, "you are beautiful");

            // 注意:要被赋值的文件应该是不存在的
            File.Copy(path, "C:/Users/Leo/Desktop/456.txt");
            // 创建文件夹
            File.Create(path);
            // 创建文件,使用UTF8编码
            File.CreateText(path);

            // 删除
            File.Delete(path);

            //加密
            File.Encrypt(path);
            // 解密
            File.Decrypt(path);

            // 判断当前文件是否存在
            if (File.Exists(path))
            {
                Console.WriteLine("当前文件存在");
            }
            else
            {
                Console.WriteLine("文件不存在");
            }
            // 获取封装路径的指定条目
            FileSecurity d =  File.GetAccessControl(path);
            Console.WriteLine(d.ToString());

            // 获取此路径上的档案
            FileAttributes a = File.GetAttributes(path);
            Console.WriteLine(a.ToString());

            // 获取创建时间
            DateTime t = File.GetCreationTime(path);
            Console.WriteLine(t.ToLocalTime());

            // 移动,会将原有的文件删除
            File.Move(path, "C:/Users/Leo/Desktop/456.txt");
            // 以读写的权限打开文件的流
            File.Open(path, FileMode.OpenOrCreate);
            // 拿到可以读取的当前文件流
            FileStream str = File.OpenRead(path);
            Console.WriteLine(str.ToString());

            byte[] buffer = File.ReadAllBytes(path);
            Console.WriteLine(buffer.Length);
            for (int i = 0; i < buffer.Length; i++)
            {
                // 输出的是元素的二进制数值(Ascii)
               Console.WriteLine(buffer[i]);
            }
            // 输出里面所有的文件用字符串数组的方法
            string[] substr = File.ReadAllLines(path);
            foreach (var item in substr)
            {
                Console.WriteLine(item);
            }
            // 输出文本所有行
            string lineStr = File.ReadAllText(path);
            Console.WriteLine(lineStr);
            // 控制文件的属性
            FileAttributes f = FileAttributes.Device;
            File.SetAttributes(path,f );

            File.WriteAllText(path, "leichao");
            string[] strnumber = { "leichjao", "jiaoyu", "huanying", "ni" };
            File.WriteAllLines(path, strnumber);
            byte[] b1 = { 59, 59, 59, 59, 59 };
            File.WriteAllBytes(path,b1);

4. FileStream 读写文件

多用来处理2进制文件

代码语言:javascript
复制
FileSteam fs = new FileSteam("文件路径",FileModel.Open)
byte[] buffer = new byte[1024*1024*5];
// 返回被刺实际读取到的有效字节数
int r = fs.Read(buffer,0,buffer.Length);
// 将字节数组中每一个元素按照指定的编码格式解码成字符串
string s = Encoding.Default.GetString(buffer);
// 关闭流
fs.Close();
// 释放流所占用的资源
fs.Dispose();

using(FileSteam fs = new FileSteam(@"路径",FileMode.OpenOrCreat,FileAccess.Write))
{
  string str = "谢谢你的关心";
  byte[] buffer = Encoding.Default.GetBytes(str);
  fs.Write(buffer,0,buffer.Length);

}
Console.WriteLine("写入ok");

// 1.创建一个负责读取的流
using(FileSteam fs = new FileSteam(source,FileMode.OpenOrCreat,FileAcces.Write))
{
     // 创建写入的流
using(FileStream fsWrite = new FileStream(target,FileMode.OpenOrCreat,FileAcces.Write))
{
    byte[] buffer = new byte[1024*1024*5];
    // 因为文件比较大,所以通过一个循环去读取
 while(true)
{
   //返回读取到的字节数
    int r = fs.Read(buffer,0,buffer.length)
   // 如果r是0,就表示没有读取到
   if(r==0)
  {
   break;
  }
// 因为这个长度是固定的,并不是我们读取到的,所以以r为主
// fsWrite.Write(buffer,0,buffer.Length); 错误
fsWrite.Write(buffer,0,r);
}
}
}
6. StreamReader和StreamWriter

多用来用于处理文本文件。自动处理文本格式

代码语言:javascript
复制
        /// <summary>
        /// 读取用户传递的路径文本资料,并以用户需要的格式显示出来
        /// </summary>
        /// <param 文件路径="path"></param>
        /// <param 编码格式="encoding"></param>
        static void StreamRead(string path,Encoding encoding)
        {
            using (StreamReader r = new StreamReader(path, encoding))
            {      // 这种只能读取一行
                   // Console.WriteLine(r.ReadLine());
                   // 如果当前的流不在最后一个位置,意思就是没读完文本
                while (!r.EndOfStream)
                {
                    // 读取
                    Console.WriteLine(r.ReadLine());
                }
                r.Close(); // 释放资源
            }
        }
代码语言:javascript
复制
        /// <summary>
        /// 书写自己添加的内容,并读取
        /// </summary>
        /// <param 文件路径="path"></param>
        /// <param 编码格式="encoding"></param>
        /// <param 书写内容="writerContent"></param>
        static void StreamWrite(string path, Encoding encoding,string writerContent)
        {
            // 追加只需要在后面参数写true
            using (StreamWriter s = new StreamWriter(path, true, encoding))
            {
                s.Write(writerContent);
                s.Close();
            }
        }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Path
  • 2. FileInfo 文件操作
  • 3. DirectoryInfo 文件夹操作
  • 4.File读写文件
  • 4. FileStream 读写文件
    • 6. StreamReader和StreamWriter
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档