文件操作常用相对类File ,FileStream, Directory, Path
文件操作常用相对类:
File // 操作文件,静态类。
FileInfo //文件类,用来描述一个文件对象,(获取指定目录下的所有文件,返回一个数组)
Directory //操作目录(文件夹),静态类。
DirectoryInfo //文件夹的一个“类”,用来描述一个文件夹(目录)对象。返回一个DirectoryInfo数组,其用法与Directory相似。
Path // 对文件路径的操作。
Stream // 文件流,抽象类
FileStream // 文件流
MemoryStream//内存流
NetWorkStream//网络流
StreamReader //快速读取文本文件
StreamWriter //快速写入文本文件
1 Path 类中常用的方法
注意:要引用命名空间 using System.IO;
-> ChangeExtension() //改变文件扩张名
例: string pathTxt = @"D:\temp.txt";
string result= Path.ChangeExtension(pathTxt, ".doc");
//注意:此方法只是对于次字符串的操作,若是认为将会把原有文件的扩展名修改了,那就错了。
-> Combine() //将路径和文件问拼接;
例: string path = Path.Combine(@"D:\", "temp.txt");
//此方法在使用时会自动检测路径或者文件名前是否加"\",并会自动处理,所以写不写"\"不会影响结果
-> GetDirectoryName() //获得目录名称
-> GetFileName()//获得文件名称
例: string muLu = Path.GetDirectoryName(@"D:\temp.txt"); //结果 D:\
string wenJian = Path.GetFileName(@"D:\temp.txt"); //结果 temp.txt
-> GetExtension() string wenJianExt = Path.GetExtension(@"D:\temp.txt"); // 结果 .txt
-> GetFileNameWithoutExtension() //获得没有扩展名的文件名
string wenJianExt = Path.GetFileNameWithoutExtension(@"D:\temp.txt"); //结果 temp
-> GetFullPath() //根据相对路径获得全路径 string res= Path.GetFullPath("vsbuding");
//注释:“vsbuding“是我的一个D盘上一个net文件夹中的一个文件夹,注意前面不要加"\"
-> GetPathRoot() //获取路径的根目录 string res = Path.GetPathRoot(@"D:\lianxi\第八天代码\作业"); //结果 D:\
-> GetRandomFileName() -> GetTempFileName() //获取临时临时文件文件名;
string tmpName = Path.GetTempFileName();
-> GetTempPath() //获取临时文件的目录:
string tmp = Path.GetTempPath(); -> HasExtension() //判断是否有扩展名;
-> IsPathRooted()//给定一个字符串路径,判断是相对路径还是绝对路径;
2 Directory 常用方法:
注意:要引用命名空间 using System.IO;
-> Exists() //判断磁盘上是否有该目录
bool result = Directory.Exists("D:\\net");
-> Delete() //删除该目录
bool result = Directory.Delete("D:\\net"); //注意如果目录下还有子目录和文件是不能删除的:
-> bool result = Directory.Delete("D:\\net",true); //次重载可以删除目录下还有子目录和文件的文件夹(目录)。称为递归删除
-> GetFiles() //获得指定目录下得文件名称(只是一级文件)
string[] res2= Directory.GetFiles(pathTxt);
=========
string[] res2= Directory.GetFiles(pathTxt,".txt"); //获得目录下得子 .txt 文件
=========
string[] res2= Directory.GetFiles(pathTxt,".txt",SearchOption.AllDirectories); //获取目录下所有的子文件(不仅仅是一级文件)
-> GetFileSystemEntries() //获得目录下所有子文件名称
string [] res3= Directory.GetFileSystemEntries(pathTxt);
-> string res1= Directory.GetCurrentDirectory();//获得当前的工作目录
-> CreateDirectory() //在指定的路径创建文件夹
DirectoryInfo dir = Directory.CreateDirectory(@"D:\net\2");
-> string[] dirs = Directory.GetDirectories(path); //获取指定目录下的直接子目录
-> string[] dirs = Directory.GetDirectories(path, ".txt", SearchOption.AllDirectories);
-> Directory.Move() //移动某个文件夹 (类似剪切复制)
Directory.Move(@"C:\DRIVERS\W2K\ss", @"C:\DRIVERS\W2K\King");
//注意:不可跨磁盘操作 3 File using System.IO;
->File.Create("路径") //在指定位置创建文件
->File.Copy() //文件拷贝;
File.Copy("要拷贝的文件","目标文件按",true) //是否允许覆盖,
->File.Exists() //判断文件是否存在,
->File.Move()
File.Move("要移动的文件","新的位置")
//将文件移动到新位置并指定新文件名的选项.目录不宽容跨磁盘操作,文件可以跨磁盘造作
->File.Delete() //删除文件,如果文件不存在,不会报错;
//注意:如果删除的是目录(文件夹),如果不存在就会报错
->File.ReadAllLines() //读取一整行,返回string[]
->File.WriteAllLines("路径",要写入的字符串数组)
->File.WriteAllText() //创建文件写入指定的字符串。如果已经存在此文件,就将覆盖原文件
例: string[] names = { "sk", "jk", "yzk" };
//File.WriteAllLines(@"c:\names.txt", names); //是分行写入
File.WriteAllText(@"c:\names.txt", "sukun,jiangkun,yangzhongke");
//写入的内容个不分行,如果目标文件存在就会覆盖原文件
Console.WriteLine("ok");
Console.ReadKey();
->File.ReadAllBytes("路径") //读取文件,返回byte[],把文件作为二进制来处理,
->File.WriteAllBytes("路径",byte[] bt) //创建一个文件,并写入指定的字节数组,如果目标文件已存在,将会覆盖原文件。
4 FileStream (快速的读写文件)
注意:要引用命名空间 using System.IO;
->Flus() //清空缓冲区
例:======读取文件,然后在写入另一个文件【读字节的方式】======
string path = @"D:\1.txt";
FileStream file = new FileStream(path, FileMode.Open,FileAccess.Read); //创建一个文件流,要读的文件路径,FileMode.Open打开,FileAccess.Read读取
FileStream wFile = new FileStream(@"D:\2.txt", FileMode.Open, FileAccess.Write); //创建一个文件流,要写入的文件路径,FileMode.Open,打开 FileAccess.Write写入
//因为当使用后文件流需要Close() 关闭 和Dispose()释放非托管资源 方法,为了方便和不会忘记调用,可以使用using
using(file)
{
using (wFile)
{
int res = -1; //此变量是查看是否读出字节,没有字节读出是为-1
do
{
res = file.ReadByte(); //从文件中读出一个字节,并将读取位置提升一个字节。因此返回类型是int if (res!=-1)
{
wFile.WriteByte(Convert.ToByte(res));
}
} while (res != -1);
}
}
string path = @"D:\TDDOWNLOAD\u=2546012012,2031257426&fm=3&gp=0.jpg";
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (FileStream writes = new FileStream(@"D:\2.jpg", FileMode.Create, FileAccess.Write))
{
byte[] bs = new byte[10];
int mod = 0;
while ((mod = file.Read(bs, 0, bs.Length)) != 0)
{
writes.Write(bs, 0, mod);
}
}
}
-> byte[] bs = new byte[10];
int mod = file.Read(bs, 0, bs.Length) //一次性要读的字节数组,在数组中的什么位置开始读取字节(是数组的偏移量),要读得长度,写入给缓冲区
++++++++++++++++++
这是本人的小总结,还未完善,如是里面有错误的,希望阅读此文的高手指出
优质内容筛选与推荐>>