c#路径、文件和流


1、Path:
路径是提供文件或目录位置的字符串。Path类的大多数成员不与文件系统进行交互,且不验证路径字符串所指定的文件是否存在。所以我们操作文件的时候,可以通过Path类来操作文件的路径和扩展名,然后使用File类来执行具体的文件操作。


path类的几个方法:
获得文件或文件夹所在的目录
String str = Path.GetDirectoryName(@"C:\Users\zhangkang\Desktop\1.txt");
    改变文件的扩展名
Path.ChangeExtension(@"C:\Users\zhangkang\Desktop\1.txt", "jpg");
获得文件的扩展名
    string result = Path.GetExtension(@"C:\Users\zhangkang\Desktop\繁体字.txt");
    连接路径
string path = Path.Combine(@"C:\Users\zhangkang\", @"1\2\3");
//path = "C:\Users\zhangkang\1\2\3"
获得文件名不包含扩展名
string path = Path.GetFileNameWithoutExtension(@"C:\Users\zhangkang\Desktop\1.txt");


2、File:
File 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件的操作。

File类的几个方法:
删除
File.Delete(@"C:\Users\zhangkang\Desktop\新来的.txt");


复制
File.Copy(@"C:\Users\zhangkang\Desktop\1.txt", @"C:\Users\zhangkang\Desktop\2.txt");


剪切
File.Move(@"C:\Users\zhangkang\Desktop\1.txt", @"C:\Users\zhangkang\Desktop\剪切过来的.txt");
3、FileStream
FileStream用来文件的读取和写入,打开和关闭文件来对文件进行操作,FileStream相当于一个管道,连接要操作的两个文件,这对于大文件的操作尤为中重要。
FileStream使用就是实例化FileStream对象
推荐使用的FileStream构造函数FileStream(path, FileMode, FileAccess)
path :要操作文件的路径
FileMode:用于确定如何打开文件或创建文件
FileMode.Append;若存在文件,则打开该文件并查找到文件尾,或者创建一个新文件。
FileMode.Create;指定操作系统应创建新文件。 如果文件已存在,它将被覆盖。
FileMode.CreateNew;指定操作系统应创建新文件。
FileMode.Open;指定操作系统应打开现有文件。
FileMode.OpenOrCreate: 指定操作系统应打开文件(如果文件存在);否则,应创建新文件。 
FileMode.Truncate :指定操作系统应打开现有文件。 

FileAccess:定义用于文件读取、写入或读取/写入访问权限的常数。
FileAccess.Read 对文件的读访问。 可从文件中读取数据。 与 Write 组合以进行读写访问。 
FileAccess.ReadWrite 对文件的读访问和写访问。 可从文件读取数据和将数据写入文件。 
FileAccess.Write 文件的写访问。 可将数据写入文件。 同 Read 组合即构成读/写访问权。 


例1:使用FileStream读取文件中的内容

<span style="white-space:pre">	</span>string path = @"C:\Users\zhangkang\Desktop\1.txt";
	using(FileStrem fsRead = new FileStream(path, FileMedo.OpenOrCreate, FileAccess.Read))
	{
		//创建缓冲区的大小
		byte[] buffer = new byte[fsRead.Length];
		//调用对象的读取数据的方法
		int r = fsRead.Read(buffer, 0, buffer.Length);
		//将字节转换成字符串
		string str = System.Text.Encoding.Default.GetString(buffer);
		Console.WriteLine(str);//输出字符串
	}

例2:使用FileStream写入文件内容

<span style="white-space:pre">	</span>string path = @"C:\Users\zhangkang\Desktop\1.txt";
	using(FileStream fsWrite = new FileStream(path, FileMode.Append, FileAccess.Write))
	{
		string str = "这句话将追加到文本的末尾";
		byte[] buffer = System.Text.Encoding.Default.Getbytes(str);
		fsWrite.Write(buffer, 0, buffer.Length);
		Console.WriteLine("写入成功");
	}


例3:复制文件,涉及文件的读取和写入

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[1024 * 1024 * 5];
                    //调用读文件的对象的读取数据的方法
                    int r = 0;
                    while (true)
                    {
                        //返回的r是这次读取实际读到的字节数
                        r = fsRead.Read(buffer, 0, buffer.Length);
                        //要写r
                        fsWrite.Write(buffer, 0, r);

                        if (r == 0)
                        {
                            break;
                        }
                    }

                }
            }
        }

4、StreamReader和StreamWriter
相比于Stream类,StreamReader和StreamWriter用于对字符的操作,同样通过实例化对象来操作文件。
介绍下它的构造方法
StreamReader(Stream, Encoding) Encoding用于指定字符的编码
StreamWriter(Stream, bool, Encoding)第二个boolean类型参数表示写入的方法,true表示追加,false表示覆盖,默认false。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值