c#中的path和file

在C#中,Path 类和 File 类都是用于处理文件和路径的实用工具类。

Path 类提供了一组静态方法来操作文件路径。它主要用于合并、拆分、规范化和操作文件路径的字符串。以下是一些常用的 Path 类方法示例:

string path1 = @"C:\folder1\file.txt";
         string path2 = @"C:\folder2\file.txt";
 ​
         // 合并路径
         string combinedPath = Path.Combine(path1, "subfolder", "file.txt");
 ​
         Console.WriteLine(combinedPath);
 ​
         // 获取文件名
         string fileName = Path.GetFileName(combinedPath);
         Console.WriteLine(fileName);
 ​
         // 获取文件名(无扩展名)
         string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(combinedPath);
         Console.WriteLine(fileNameWithoutExtension);
 ​
         // 获取文件扩展名
         string extension = Path.GetExtension(combinedPath);
         Console.WriteLine(extension);
 ​
         // 获取文件所在目录
         string directory = Path.GetDirectoryName(combinedPath);
         Console.WriteLine(directory);
 ​
         // 检查路径是否为绝对路径
         bool isAbsolutePath1 = Path.IsPathRooted(path1);
         bool isAbsolutePath2 = Path.IsPathRooted("relative/path.txt");
         Console.WriteLine(isAbsolutePath1);  // true
         Console.WriteLine(isAbsolutePath2);  // false

File 类提供了一组静态方法用于操作文件。它可以用于创建、复制、移动、删除以及读取和写入文件。以下是一些常用的 File 类方法示例:

 
string filePath = @"C:\folder\file.txt";
 ​
         // 创建一个新文件
         File.Create(filePath);
 ​
         // 复制文件
         string destinationPath = @"C:\folder\newfile.txt";
         File.Copy(filePath, destinationPath);
 ​
         // 移动文件
         string newPath = @"C:\newfolder\file.txt";
         File.Move(filePath, newPath);
 ​
         // 删除文件
         File.Delete(filePath);
 ​
         // 检查文件是否存在
         bool fileExists = File.Exists(filePath);
         Console.WriteLine(fileExists);
 ​
         // 读取文本文件并打印内容
         string content = File.ReadAllText(newPath);
         Console.WriteLine(content);
 ​
         // 写入文本文件
         string newContent = "Hello, World!";
         File.WriteAllText(newPath, newContent);

FileStream类

FileStream 类是 C# 中用于操作文件的一个关键类之一。它提供了对文件进行读取和写入操作的能力,并且可以在文件中进行寻址和定位。FileStream 类是 Stream 类的一个派生类,因此它继承了 Stream 类中定义的许多方法和属性。

下面是 FileStream 类的一些重要属性和方法:

构造函数

  • FileStream(string path, FileMode mode):使用指定的路径和文件模式创建一个新的 FileStream 对象。文件模式可以是 FileMode 枚举中的一个值,如 FileMode.CreateFileMode.Open 等。

  • FileStream(string path, FileMode mode, FileAccess access):创建一个新的 FileStream 对象,指定路径、文件模式和访问权限。

  • FileStream(string path, FileMode mode, FileAccess access, FileShare share):创建一个新的 FileStream 对象,指定路径、文件模式、访问权限和共享模式。

属性

  • CanRead:获取一个值,该值指示当前流是否支持读取操作。

  • CanWrite:获取一个值,该值指示当前流是否支持写入操作。

  • Length:获取流的长度(以字节为单位),即文件的大小。

  • Position:获取或设置流中的当前位置。

方法

  • Read(byte[] buffer, int offset, int count):从流中读取一定数量的字节,并将其存储到缓冲区中。

  • Write(byte[] buffer, int offset, int count):将指定数量的字节从缓冲区写入流。

  • Seek(long offset, SeekOrigin origin):将流的位置设置为指定的偏移量。

  • Flush():清空流的缓冲区,并将缓冲区的数据写入文件。

  • Close():关闭当前流并释放与之关联的所有资源。

     using System;
     using System.IO;
     ​
     class Program
     {
         static void Main()
         {
             // 创建一个新的文件流,打开或创建一个名为 "example.txt" 的文件
             using (FileStream fileStream = new FileStream("example.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
             {
                 // 将字符串写入文件
                 string text = "Hello, FileStream!";
                 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(text);
                 fileStream.Write(buffer, 0, buffer.Length);
     ​
                 // 将文件流的位置设置为文件开头
                 fileStream.Seek(0, SeekOrigin.Begin);
     ​
                 // 从文件中读取数据并显示
                 byte[] readBuffer = new byte[buffer.Length];
                 fileStream.Read(readBuffer, 0, readBuffer.Length);
                 string readText = System.Text.Encoding.UTF8.GetString(readBuffer);
                 Console.WriteLine("Read from file: " + readText);
             }
         }
     }
     ​

 
//使用文件流来实现多媒体文件的复制 
 static void Main(string[] args)
         {
             string source = @"D:\录屏\bandicam 2023-02-26 16-56-14-603.avi";
             string target = @"C:\Users\LA-ZC\Videos\Captures\new.avi";
             CopyFile(source, target);
             Console.WriteLine("复制成功!");
             Console.ReadKey();
         }
         public static void CopyFile(string source,string target)
         {
             //创建一个负责读取的流
             using(FileStream fsRead = new FileStream(source, FileMode.Open, FileAccess.Read))
             {
                 //创建一个辅助写入的流
                 using (FileStream fsWrite = new FileStream(target,FileMode.OpenOrCreate, FileAccess.Write))
                 {
                     byte[] buffer = new byte[1024 * 1024 * 5];
                     //因为文件可能会比较大所以在读取的时候应该通过一个循环去读取
                     while(true)
                     {
                         //返回本次读取实际读到的字节数
                         int r = fsRead.Read(buffer, 0, buffer.Length);
                         //如果返回一个0,也就意味着什么都没有读取到,读取完了
                         if(r == 0)
                         {
                             break;
                         }
                         fsWrite.Write(buffer, 0, r);
                     }
                     
                 }
             }
         }
 
/使用StreamReader来读取一个文本文件
             //using(StreamReader sr = new StreamReader(@"C:\Users\LA-ZC\Desktop\实例2.sql",Encoding.Default))
             //{
 ​
             //    while (!sr.EndOfStream)
             //    {
             //        Console.WriteLine(sr.ReadLine());
             //    }
 ​
             //}
             //使用StreamWriter来写入一个文本文件
             using(StreamWriter sw = new StreamWriter(@"C:\Users\LA-ZC\Desktop\newnew.txt",true))
             {
                 sw.Write("今天天气还可以");
             }
             Console.WriteLine("写入成功");
             Console.ReadKey();

  • 64
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值