C#对文件/目录的操作:Path、File、Directory、FileStream、StreamReader、StreamWriter等类的浅析
以下类的命名空间都是:System.I/0;
一、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); //获得无后缀文件名:
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—————
四、StreamReader 、StreamWriter 操作字符,即针对文本操作
1、创建StreamReader 读取实例
using(StreamReader smReader= new StreamReader(@"c:\a\b\c\.123.txt",Encoding.Default))
{
//!非 , 是否当读到文件里面的最后一行 循环打印出文本文件的内容到窗口
while(!smReader.EndOfStream)
{
//读取一行,返回string 字符串
Console.WriteLine( smWrite.ReadLine() );
}
}
2、创建StreamWriter 写入实例
//True 表示追加写入。
using(StreamWriter smWriter= new StreamWriter(@"c:\a\b\c\.123.txt",True))
{
//c:\a\b\c\.123.txt 内容追加“123456”
smWrite.Write("123456") ;
}
本次分享到此结束,有错误之处请回复指正!
C#对文件/目录的操作:Path、File、Directory、FileStream、StreamReader、StreamWriter等类的浅析的更多相关文章
- C#面向对象13 文件类操作 Path/File/FileStream
1.path using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- File、FileStream、StreamWriter、StringWriter文件使用总结
一.File 1.File为静态类 File类,是一个静态类,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参量很多时候都是路径path.主要提供有关文件的各种操作, ...
- 20151024_003_C#基础知识(File / FileStream / StreamReader/StreamWriter)
1:绝对路径和相对路径 绝对路径:通过给定的路径直接能在我的电脑中找到这个文件. 相对路径:文件相对于应用程序的路径. 2:编码格式 乱码:产生乱码的原因,就是你保存这个文件所采用的编码,跟你打开这个 ...
- File FileStream StreamReader StreamWriter C#
存在各种各样的IO设备,比如说文件File类(字符串文件和二进制文件),可以直接使用File类对文件进行读写操作. 这些各种IO的读取和写入是通过流的形式实现的,基类为Stream,针对各种不同的IO ...
- File,FileInfo,FileStream,StreamReader的区别与用法
概括的说,File,FileInfo,FileStream是用于文件 I/O 的类,StreamReader是用于从流读取和写入流的类,使用之前都需using System.IO. 先定义一个TXT文 ...
- Linux 指令(一)文件/目录操作
1. 创建目录 mkdir 格式 mkdir [OPTION]... DIRECTORY... 选项 -p 递归创建 -v 创建时提示 例: root@ubuntu:/home/eko/x# mkdi ...
- C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)
文件流 FileStream 可读可写 大文件 释放 StreamReader 读取 释放 StreamWriter 写入 释放 using 中释放 File 可读可写 小文件 操作文 ...
- path类和directory类对文件的路径或目录进行操作
Path: 对文件或目录的路径进行操作(很方便)[只是对字符串的操作] 1.目录和文件操作的命名控件System.IO 2.string Path.ChangeExtension(string ...
- 文件操作之File 和 Path
转载:https://blog.csdn.net/u010889616/article/details/52694061 Java7中文件IO发生了很大的变化,专门引入了很多新的类: import j ...
随机推荐
- [AlwaysOn Availability Groups]CLUSTER.LOG(AG)
CLUSTER.LOG(AG) 作为故障转移资源,在SQL Server和windows故障转移集群服务的资源DLL(hadrres.dll)之间有额外的内部交流,DLL无法被SQL Server监控 ...
- Linux iptables 防火墙
内容摘要 防火墙 防火墙定义 防火墙分类 netfilter/iptables netfilter 设计架构 iptables 简述 iptables 命令详解 命令语法 table 参数 comma ...
- date命令总结
date命令是显示或设置系统时间与日期 date(选项)(参数) -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: -s<字符串>:根据字符串来设置日期与 ...
- 实战:考虑性能--Solr索引的schema设计
从 high level 的角度来看,schema.xml 结果如下,这个例子虽然不是一个真实的XML,但是简洁明了的传达了shema的概念. <schema> <types> ...
- 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上
阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...
- Ubuntu Mysql 维护
安装MySql sudo apt-get install mysql-server 进入Mysql Shell mysql -u root -p 查询数据库 SHOW DATABASES; 创建数据库 ...
- 某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题
某墙墙了古古路,一些开源的东东里用了古古路CDN,比如Exceptional,Opserver ,导致服务要么慢要么用不了 必须要替换之 Exceptional就只要用Response.Filter替 ...
- star ccm+ 11.02安装
STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...
- Spring事务管理----声明式:利用TransactionProxyFactoryBean生成事务代理
通常建议采用声明式事务管理.声明式事务管理的优势非常明显:代码中无需关于关注事务逻辑,让spring声明式事务管理负责事务逻辑,声明式事务管理无需与具体的事务逻辑耦合,可以方便地在不同事务逻辑之间切换 ...
- KVO设计模式
一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应 ...