首页 > 代码库 > C#对文件/目录的操作:Path、File、Directory、FileStream、StreamWriter、StreamReader等类的浅析
C#对文件/目录的操作:Path、File、Directory、FileStream、StreamWriter、StreamReader等类的浅析
一、Path:主要对文件路径的操作!
常用方法:
String path=@"C:\a\b\c\123.txt";
1-1、Path.GetFileName(path); //获得文件名:123.txt
1-2、Path.GetExtenSion(path); //获得后缀名:.txt
1-3、Path.GetFileNameWithoutExtension(path); //获得无后缀文件名:123
1-4、Path.GetDirectoryName(path); //获得当前文件的路径:C:\a\b\c
1-5、Path.ChangeExtenSion(path,".exe"); //对pat字符串修改后缀,即输出:C:\a\b\c\123.exe
1-6、Path.Combine(s1,s2); //路径的合并:s1=@"c:\1\2"或@ s1="c:\1\2\" ,s2=@"abc.txt" 结果都是:"c:\1\2\abc.txt"
1-7、Path.GetFullpath(o.txt) ; // o.txt文件在bin目录下 //获得相对路径的绝对路径:c:\..\..\..\bin\Debug\o.txt
1-8、Path.ReadAllText(path); //获得文件(即:123.txt)的内容
1-9、PathGetTempPath() //获得当前用户的临时文件路径
1-10、Path.GetTempFileName() //获得一个唯一一个临时文件名(*)
1-11、Path.GetRandomFileName() //反回一个String 的随机文件名
二、File:主要用于文件及其内容的操作
1-1、File.Exists(@"c:\1\2\abc.txt") ; // 返回 bool ;判断路径:c:\1\2.abc.tex 是否存在
1-2、File.Create(@"c:\1\2\abc.txt"); //在 c:\1\2\创建abc.txt文件。注: 如果存在该文件名则或覆盖
1-3、File.Move(@"c:\1\2\abc.txt",@"c:\1\abc.txt") //abc.txt 从c:\1\2\ 移动到c:\1\下
1-4、File.Copy(@"c:\1\2\abc.txt","123.txt",true); //在当前文件abc.txt,拷贝成123.txt True表示:如果文件存在时“覆盖”,不加则报错!
1-5、File.Delete(@"c:\1\2\abc.txt"); //删除abc.txt,如果文件不存在不会报错
读/写文件内容方法:
1-6、Flie.ReadAllText(@"c:\1\2\abc.txt",Encoding.UTF-8); //以utf-8编码 读取c:\1\2\目录下的 abc.txt 文件的内容 返回:string 字符串
1-7、Flie.ReadAllLines(@"c:\1\2\abc.txt",Encoding.UTF-8); //以utf-8编码 按行读取c:\1\2\目录下的 abc.txt 文件的内容 返回:string[] 字符串数组
1-8、Flie.ReadAllBytes(@"c:\1\2\abc.txt",Encoding.UTF-8); ///以utf-8编码读取c:\1\2\目录下的 abc.txt 文件的内容 返回:bytes[] 数组
1-9、Flie.WriteAllBytes(@"c:\1\2\abc.txt",bytes); //bytes是Byte[]数组 //将 bytes 写入c:\1\2\目录下的 abc.txt 文件的内容 会覆盖
1-10、Flie.WriteAllLines(@"c:\1\2\abc.txt",strings); //strings是strings[]数组,将strings按行写入c:\1\2\目录下的 abc.txt 文件的内容 会覆盖
1-11、Flie.WriteAllText(@"c:\1\2\abc.txt",string); //string是字符串,将string写入c:\1\2\目录下的 abc.txt 文件的内容 返回:string 字符串 会覆盖! 补充: File.AppandAllText(@"c:\1\2\abc.txt",string)追加方法
补充:字符串、bytes[]数组互转 方法:以UTF-8为例 要统一编码,否则会出现乱码
Encoding.UTF-8.getBytes(string),
Encoding.UTF-8.getString(bytes[] bytes)
三、FileStream 类:操作字节的
读取文件:
———————————读取star—————
1、创建一个FileStream 对象
//FileMode是枚举类型;Appand,Create,CreateNew,Open,OpenOrCreate,Truncate
//FileAccess是枚举类型;Read,ReadWrite,Write
FileStream FSRead= new FileStream(@"c:\1\2\3\abc.txt",FileMode.OpenOrCreate,FileAccess.Read);
byte[] buffer= new byte[1024*1024*5]; //5M数组
//.Read(byte[] buffer,int starIndex, int count)//Read方法参数 返回 int ,即读取到的实际有效的字节数
int i = FSRead.Read( buffer,0, buffer.Length);
//将数组转码成字符串
string str= encoding.UTF-8.GetString(buffer,0,r);//0:即从第0个自己开始转码,r:转码个数
//关闭 &释放 FSRead 文件流占用的资源
FSRead.Close();
FSRead.Dispose()
———————————读取end—————
———————————写入star—————
FileStream 写入:using(会自动释放资源)
using(FileStream FSWrite= new FileStream(@"c:\1\2\3\abc.txt",FileMode.OpenOrCreate,FileAccess.Wirte))
{
string str = "123456789";
byte [] buffer= Encoding.UTF-8.GetByte(str);
FSWrite.Write(buffer,0,bufffer.Length)
}
———————————写入end—————
先写到这了
StreamWriter、StreamReader 待续、、、
C#对文件/目录的操作:Path、File、Directory、FileStream、StreamWriter、StreamReader等类的浅析