在System.IO名称空间中包含了用于文件输入输出的主要类。<?XML:NAMESPACE PREFIX = O />
File:实用类,提供许多静态方法,用于移动、复制和删除文件。
Directory:实用类,提供许多静态方法,用于移动、复制和删除目录。
Path:实用类,用于处理路径名称。
FileInfo:表示磁盘上的物理文件,具有可以处理此文件的方法。要完成对文件的读取和写入工作,就必须创建Stream对象。
DirectoryInfo:表示磁盘上的物理目录,具有可以处理此目录的方法。
FileStream:表示可以被写或被读,或二者均可的文件。此文件可以同步或异步的读和写。
StreamReader:从流中读取字符数据,并可以通过使用FileStream被创建为基类。
StreamWriter:向流写字符数据,可以通过使用FileStream被创建为基类。
FileSystemWatcher:用于监控文件和目录,并在这些位置发生变化时,给出应用程序可以捕获的事件。
File类一些常用的静态方法:
方法
说明
Copy()
将文件复制到规定的位置
Create()
在规定的路径上创建文件
Delete()
删除文件
Open()
在规定的路径上返回FileStream对象
Move()
将规定的文件移动到新位置。可以在新位置为文件规定不同的名称
Directory类一些常用的静态方法:
方法
说明
CreateDirectory()
创建具有规定路径的目录
Delete()
删除规定的目录以及其中的所有文件
GetDirectories()
返回表示当前目录之下的目录的Directory对象的数组
GetFiles()
返回在当前目录中的File对象的数组
Move()
将规定的目录移动到新位置。可以在新位置为文件夹规定一个新名称
FileInfo类:
它没有静态方法,仅可用于实例化的对象。FileInfo对象表示在磁盘或网络位置的文件。注意它不是流。为了实现对文件的读取或写入,必须创建Stream对象。
如果仅在对象上进行单一方法调用,则可以使用静态File类。在此,静态调用要快一些,因为.Net Framework不必遍历实例化新对象并调用方法的过程。但是如果应用程序在文件上执行几种操作,在实例化FileInfo对象并使用其方法就更好一些。这会节省时间,因为对象将在文件系统上引用正确的文件,而静态类就必须每次都寻找文件。
FileInfo类提供的基础性的属性,可用来更新文件。
属性
说明
Attributes
获取或者设置当前文件的属性
CreationTime
获取当前文件的创建日期和时间
DirectoryName
返回文件目录的路径
Exists
判断是否存在文件
FullName
检索文件的完整路径
Length
获取文件的容量
Name
仅仅返回文件的名称,而不是完整的文件位置路径
DirectoryInfo类:
DirectoryInfo类的作用类似于FileInfo类。它是一个实例化的对象,表示计算机上的单一目录。同FileInfo类—样,在Directory和DirectoryInfo之间可以复制许多方法调用。当使用这二者时,可以便用相同的原则:如果进行单一调用,就使用静态Directory类。如果进行一系列调用,则使用实例化的DirectoryInfo对象。
DirectoryInfo类与FileInfo类共享几乎所有相同的属性,DirectoryInfo类作用在无文件的目录上除外。
FileStream对象:
表示在磁盘或网络路径上指向文件的流。当类提供向文件读取和写入字节的方法时,经常使用StreamReader和StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。
还有几种方法可以创建FileStream对象。构造函数具有许多不同的重载/版本,但是最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举。
FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate);
FileMode枚举的成员:
FileMode枚举成员
说明
Append
如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用
Create
创建新文件,如果存在这样的文件就破坏它
CreateNew
创建新文件,但是如果已经存在了此文件,则抛出异常
Open
打开现有的文件。如果不存在所规定的文件,则抛出异常
OpenOrCreate
如果文件存在,则规定打开文件,否则就创建新文件。如果文件已经存在,则保留在文件中的数据
Truncate
打开现有文件,清除其内容。然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期。必须存在有文件,否则就会抛出异常
前面的构造函数默认以只读模式打开文件。需要一个附加参数规定不同的访问级别,此参数即FileAccess参数。
FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate,FileAccess.Write);
此行代码将打开文件,对文件进行写访问。对文件的任何读的企图都会导致抛出异常。仅有3种类型的FileAccess枚举:Read,ReadWirte和Write。可以打开一个文件,只读、只写或进行读写操作。此属性的作用是:基于用户的身份验证级别改变用户对文件的访问。
例:从文件中读取信息(其中用到了将字节块转换为字符块的方法)
例:将相应的字符信息写入到文件中(其中用到了将字符块转换为字节块的方法,然后再进行写入操作)
StreamWriter类:
允许我们将字符和字符串写入到文件中,它处理重要的转换和向FileStream对象写入工作。
如果已经有了FileStream对象,则可以使用此对象来创建StreamWriter类。
FileStream aFile = new FileStream(@"Temp.txt",FileMode.CreateNew);
StreamWriter sw = new StreamWriter(aFile);
也可以直接从文件中创建StreamWriter对象。
StreamWriter sw = new StreamWriter(@"Temp.txt",true);
这个构造函数中的后一个参数的意义是:
false:创建一个新文件,或者截取现有文件并打开它。
true:打开文件,保留原来的数据。如果找不到文件,则创建一个新文件。
例子见程序。
StreamReader类:
从文件中读取数据,可以用于任何流。
利用FileStream对象创建。
FileStream aFile = new FileStream(@"Temp.txt",FileMode.Open);
StreamReader sr = new StreamReader(aFile);
直接从文件中创建。
StreamReader sw = new StreamReader(@"Temp.txt");
例子见程序。

例子程序

转载于:https://blog.51cto.com/bearstudyhard/298091

C#学习笔记(二十一):使用文件基础相关推荐

  1. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  2. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面

    先看之前的节点操作方法:Mr.J-- jQuery学习笔记(二十)--节点操作方法 Mr.J-- jQuery学习笔记(五)--属性及属性节点 Mr.J-- jQuery学习笔记(十一)--事件委托  ...

  3. kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  4. linux驱动开发学习笔记二十一:异步通知

    一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...

  5. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别

    一.颜色空间介绍        RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...

  6. IOS学习笔记二十一(NSDictionary、NSMutableDictionary)

    1.NSDictionary.NSMutableDictionary 可以理解为java里面的map,一个key对应一个value,key不可以重复 NSDictionary不可变,NSMutable ...

  7. java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一

    timeout用于检测在给定时间内observables没有及时响应.如果指定的时间量没有发出任何项目,则超时会使observables失败并出现TimeoutException. 我们将从debou ...

  8. 立创eda学习笔记二十一:添加、移除泪滴

    在PCB电路板设计中,为了让焊盘更坚固,防止机械制板时焊盘与导线之间断开,常在焊盘和导线之间用铜膜布置一个过渡区,形状像泪滴,故常称做补泪滴(Teardrops). 泪滴的作用 避免电路板受到巨大外力 ...

  9. 西门子PLC学习笔记二十一-(中断处理一)

    中断处理用来实现对特殊内部事件或外部事件的快速响应.CPU检测到中断请求时,立即响应中断,调用中断源对应的中断程序(OB).执行完中断程序后,返回被中断的程序中. 中断源类型主要有:I/O模块的硬件中 ...

  10. 媒体查询配合rem使用(HTML+CSS学习笔记二十一)

    媒体查询 + rem 计算方法 计算rem方法: 结合媒体查询 -> 随着设备的改变 更改html font-size的值. ​ 媒体查询确定范围?? ​ 移动端设计图 : 640px 750p ...

最新文章

  1. python每月定时_paypal每月订阅计划设置为每月的第一天,并进行每月定期付款 – django python...
  2. js 层随着滚动条上下移动
  3. JPA中实现双向一对多的关联关系
  4. Object类Objects类总结
  5. myeclipse链接数据库,SQL语句实现增删改查
  6. Google IO 2015 Material Now
  7. ScheduledThreadPoolExecutor部分源码学习
  8. html组合标题,如何组合标题关键词(影响标题的5个因素)
  9. su室内插件_SketchUp必学插件TOP100,每一个都是[室内/装饰/景观]设计的效率神器...
  10. 病毒周报(081208至081214)
  11. 前端工程师面试题详解(二)
  12. 详解重定向(HTTP状态码301/302/303/307/308)附案例
  13. activiti实现的请假流程
  14. BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...
  15. ubuntu linux编译环境搭建,Ubuntu14.04开发环境搭建
  16. 【计算机基础】多媒体技术、网页制作、计算机网络
  17. Android刘海屏适配
  18. 天池O2O优惠券使用预测
  19. 关于DXP的规则检查中Un-Rounted Net Constraint问题
  20. corelDRAW制作笔

热门文章

  1. 机场精细化管理_全国首家!西安咸阳国际机场通过民航局安全管理体系专项审核...
  2. jfinal项目tomcat下部署
  3. IDC发布2018中国AI服务器销量报告:浪潮领头,交通应用增幅最猛
  4. 美国AI出口限令倒计时,硅谷直喊“下手轻点”,担心推动中国技术发展
  5. 如何评价百度新目标:Everyone can AI ?| 在现场
  6. Kafka如何实现每秒上百万的超高并发写入?掌握好面试给你打满分!
  7. 《Python Cookbook(第3版)中文版》——1.5 实现优先级队列
  8. JS设置弹出小窗口。
  9. Access数据库问题锦集
  10. glusterfs的一些基本知识