C#文件操作基础之File类和FileInfo类

文件和I/O流的差异:


文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。
因此对于文件,我们经常想到文件夹路径,磁盘存储,文件和文件夹名等方面。
I/O流提供一种后备存储写入字节和从后备存储读取字节的方式。
后备存储能够为多种存储媒介之中的一个。


System.IO命名空间中的经常使用类:


BinaryReader     用特定的编码将基元数据类型读作二进制值
BinaryWriter     以二进制形式将基元类型写入流,并支持用特定的编码写入字符串
Directory        公开用于创建、移动和枚举通过文件夹和子文件夹的静态方法,无法被继                  承
DirectoryInfo    公开用于创建、移动和枚举文件夹和子文件夹的实例方法,无法被继承
File             提供创建、复制、删除、移动和打开文件的静态方法,协助创建                      FileStream对象
FileInfo         提供创建、复制、删除、移动和打开文件的实例方法,而且帮助创建                  FileStream对象
FileStream       公开以文件为主的Stream,既支持同步读写操作,也支持异步读写操                  作
FileSystemInfo   为FileInfo和DirectoryInfo对象提供基类
StreamReader     实现一个TextReader,使其以一种特定的编码从字节流中读取字符
StreamWriter     实现一个TextWriter,使其以一种特定的编码向流中写入字符






1.File类:


Copy                  将现有文件拷贝到新文件

Create                在指定路径中创建文件
Delete                删除指定的文件,假设指定的文件不存在,则不引起异常
Exists                确定指定的文件是否存在
Move                  将指定文件移到新位置,并提供指定新文件名称的选项
Open                  打开指定路径上的FileStream
GetCreationTime       返回指定文件或文件夹的创建日期和时间
OpenRead              打开现有文件进行读取
OpenText              打开现有UTF-8编码文本文件以进行读取
OpenWrite             打开现有文件进行写入




2.FileInfo类:

Directory       获取父文件夹的实例

Exists          获取指示文件是否存在的值

FullName        获取文件夹或文件的完整文件夹

Length          获取当前文件的大小

Name            获取文件名称



3.File类和FileInfo类的基本操作方法


注意:

因为File类中的全部方法都是静态的,所以假设仅仅想运行一个操作,那么使用File类中方法的效率比使用对应的FileInfo类中的方法可能更高


File类中的方法都是静态方法,在使用时须要对全部方法都运行安全检查。因此假设打算多次重用某个对象,可考虑改用FileInfo类中的对应方法,由于不总是须要安全检查。




(1)推断文件是否存在Exists方法


返回bool型,假设path为空或者没有权限,则返回false

File:推断C盘根文件夹下有没有test.txt文件:

File.Exists("C:\\test.txt")


FileInfo:

FileInfo fileinfo = new FileInfo("C:\\test.txt")

if(fileinfo.Exists){}




(2)创建文件用Create方法


File类的Create方法有4中重载方法:

public static FileStream Create(string path)

public static FileStream Create(string path,int bufferSize)

public static FileStream Create(string path,int bufferSize,FileOptions options)

public static FileStream Create(string path,int bufferSize,FileOptions options,FileSecurity fileSecurity)


File类Create方法參数说明

path               文件名称

bufferSize         用于读取和写入文件的已放入缓冲区的字节数

options            FileOptions值之中的一个,它描写叙述怎样创建或改写该文件

fileSecurity       FileSecurity值之中的一个,它确定文件的訪问控制和审核安全性


File类

File.Create("C:\\test.txt")


FileInfo类:

FileInfo fileinfo = new FileInfo("C:\\test.txt")

fileinfo.Create();




(3)拷贝文件用File类的Copy方法以及FileInfo类的CopyTo方法


File类的Copy方法或者FileInfo类的CopyTo方法

File类的Copy方法有两种重载方式

public static void Copy(string sourceFileName,string destFileName)

public static void Copy(string sourceFileName,string destFileName,bool overwrite)

sourceFileName表示要复制的文件,destFileName表示目标文件的名称,不能是文件夹,假设是第一种重载,则目标文件參数不能是现有文件

overwrite表示能否够改写目标文件


将C盘根文件夹下的test.txt文本文件拷贝到D盘根文件夹下:

(这边注意措辞,说明D盘根文件夹下是没有test.txt文件的)

File.Copy("C:\\test.txt","D:\\test.txt")


FileInfo类的CopyTo方法也有两种重载方式

public FileInfo CopyTo(string destFileName)

public FileInfo CopyTo(string destFileName,bool overwrite)


FileInfo fileinfo = new FileInfo("C:\\test.txt");

fileinfo.CopyTo("D:\\test.txt",true);




(4)移动文件用File类的Move方法和FileInfo类的MoveTo方法


File类-Move方法-

public static void Move(string sourceFileName,string destFileName)

File.Move("C:\\test.txt","D:\\test.txt")


FileInfo类-MoveTo方法-publicvoid MoveTo(string destFileName)

FileInfo fileinfo = new FileInfo("C:\\test.txt");

fileinfo.MoveTo("D:\\test.txt");




(5)删除文件用Delete方法


File类-Delete方法-public staticvoid Delete(string path)

File.Delete("C:\\test.txt")


FileInfo类-Delete方法-publicvoid Delete(string path)

FileInfo fileinfo = new FileInfo("C:\\test.txt");

fileinfo.Delete("D:\\test.txt");


转载于:https://www.cnblogs.com/zfyouxi/p/4261539.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj 2051 Argus(优先队列)

题目链接: http://poj.org/problem?id2051 思路分析: 优先级问题,使用优先队列求解;当执行某个任务后,再增加一个任务到队列中, 该任务的优先级为执行任务的时间加上其时间间隔,如此反复直到求出前K个执行任务。 代码&#xff1a…

Mybatis 算术逻辑运算

第一种方法&#xff1a; 用了转义字符把>和<替换掉&#xff0c;然后就没有问题了。 SELECT * FROM test WHERE 1 1 AND start_date < CURRENT_DATE AND end_date > CURRENT_DATE 附&#xff1a;XML转义字符 < …

c++ STL deque容器成员函数

deque是双向队列&#xff0c;即可以在头部插入删除&#xff0c;也可以在尾部插入删除。内部并不连续&#xff0c;这一点和vector并不一样。可能第1个元素和第2个元素的地址是不连在一起的。在使用时用it迭代器会安全一点。 这是c 98标准的&#xff0c;不是c11的。11标准新加的函…

sqlserver中判断表或临时表是否存在

转自&#xff1a;http://www.cnblogs.com/yugen/archive/2010/07/25/1784749.html 1、判断数据表是否存在 方法一&#xff1a; use yourdb;go if object_id(Ntablename,NU) is not nullprint 存在else print 不存在 例如&#xff1a;use fireweb;go if object_id(NTEMP_TBL,NU)…

Mysql数据库正则表达式

1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名称含有1000的所有行 SELECT * FROM a1 WHERE name regexp .000 #匹配以000结尾的所有行&#xff0c;(.正则中表示&#xff1a;匹配任意一个字符) 从中可以看到正则表达式能够模拟LIKE使用通配符&#xff0c…

android项目 之 记事本(6)----- 加入手写

想必大家都用过QQ的白板功能&#xff0c;里面主要有两项&#xff0c;一个是涂鸦功能&#xff0c;事实上类似于上节的画板功能&#xff0c;而还有一个就是手写&#xff0c;那记事本怎么能没有这个功能呢&#xff0c;今天就来为我们的记事本加入手写功能。 先上图&#xff0c;看看…

HTTP协议中常见请求方法以及一些常见错误代码

GET&#xff1a; 请求指定的页面信息&#xff0c;并返回实体主体。 HEAD&#xff1a; 只请求页面的首部。 POST&#xff1a; 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 PUT&#xff1a; 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE&#xff…

license文件生成原理

byte解密weblogic加密oraclehex现在很多J2EE应用都采用一个license文件来授权系统的使用&#xff0c;特别是在系统购买的早期&#xff0c;会提供有限制的license文件对系统进行限制&#xff0c;比如试用版有譬如IP、日期、最大用户数量的限制等。 而license控制的方法又有很…

linux常用关机命令及其区别-Shutdown halt reboot init

1.shutdown shutdown命令安全地将系统关机。 shutdown 参数说明: [-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。 [-r] 重启计算器。 [-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。 [-h] 关机后关闭电源〔halt〕。 [-n] 不用init﹐而是自己来关机。不鼓…

CSS3动画@keyframes中translate和scale混用出错问题

在写基于网页的2048时&#xff0c;想让一个元素出现时已经通过translate属性固定在指定位置&#xff0c;同时显示动画scale(0)-->scale(1)&#xff0c;以实现放大出现效果。 CSS代码为 -webkit-keyframes mymove_failed{0% {-webkit-transform:translate(50px,50px) scale…

metero学习

博客园首页新随笔联系订阅管理最新随笔 最新评论 node.js相关的中文文档及教程 (转) Posted on 2013-08-30 10:40 小小清清 阅读(61) 评论(0) 编辑 收藏 node.js api中英文对照: http://docs.cnodejs.net/cman/ node.js入门中文版: http://nodebeginner.org/index-zh-cn.html e…

Linux统计单个文件统计

语法&#xff1a;wc [选项] 文件… 说明&#xff1a;该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名&#xff0c;则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下&#xff1a; - c 统计字节数…

jQuery慢慢啃之事件对象(十一)

1.event.currentTarget//在事件冒泡阶段中的当前DOM元素 $("p").click(function(event) {alert( event.currentTarget this ); // true }); 2.event.data//当前执行的处理器被绑定的时候&#xff0c;包含可选的数据传递给jQuery.fn.bind。 $("a").ea…

Linuxcurl命令参数详解

Linuxcurl是通过url语法在命令行下上传或下载文件的工具软件&#xff0c;它支持http,https,ftp,ftps,telnet等多种协议&#xff0c;常被用来抓取网页和监控Web服务器状态。1.linuxcurl抓取网页&#xff1a;抓取百度&#xff1a;curlhttp://www.baidu.com如发现乱码&#xff0c;…

android解析XML总结(SAX、Pull、Dom三种方式)

在android开发中&#xff0c;经常用到去解析xml文件&#xff0c;常见的解析xml的方式有一下三种&#xff1a;SAX、Pull、Dom解析方式。 今天解析的xml示例&#xff08;channels.xml&#xff09;如下&#xff1a; 1 <?xml version"1.0" encoding"utf-8"…

查看Eclipse中的jar包的源代码:jd-gui.exe

前面搞了很久的使用JAD&#xff0c;各种下载插件&#xff0c;最后配置好了&#xff0c;还是不能用&#xff0c;不知道怎么回事&#xff0c; 想起一起用过的jd-gui.exe这个工具&#xff0c;是各种强大啊&#xff01;&#xff01;&#xff01; 只需要把jar包直接扔进去就可以了&a…

maven scope含义的说明

compile &#xff08;编译范围&#xff09; compile是默认的范围&#xff1b;如果没有提供一个范围&#xff0c;那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用&#xff0c;同时它们也会被打包。 provided &#xff08;已提供范围&#xff09; provided 依…

此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求...

FirFox打开80以外的端口&#xff0c;会弹出以下提示&#xff1a; “此地址使用了一个通常用于网络浏览以外的端口。出于安全原因&#xff0c;Firefox 取消了该请求。”。 解决方法如下&#xff1a; 在Firefox地址栏输入about:config,然后在右键新建一个字符串键network.securit…

Java操作shell脚本

public class Exec {private static ILogger logger LoggerFactory.getLogger(Exec.class);public Exec() {super();}/*** 执行命令&#xff08;如Shell脚本&#xff09;<br>* * param cmd 操作命令* param timeout 超时时间* return 命令执行过程输出内容* * throws IO…

Mysql更新插入

在向表中插入数据的时候&#xff0c;经常遇到这样的情况&#xff1a;1. 首先判断数据是否存在&#xff1b; 2. 如果不存在&#xff0c;则插入&#xff1b;3.如果存在&#xff0c;则更新。 在 SQL Server 中可以这样处理&#xff1a; if not exists (select 1 from t where id …