用 C# 轻松读取、改变文件的创建、修改、访问时间
创建时间是文件存入到电脑中的时间,而修改时间则是改变起内容的最后时间
// 读取文件的创建、修改、访问时间
FileInfo fi = new FileInfo("C://test.txt");
Console.WriteLine(fi.CreationTime.ToString());
Console.WriteLine(fi.LastWriteTime.ToString());
Console.WriteLine(fi.LastAccessTime.ToString()); // 改变(设置)文件的创建、修改、访问时间
File.SetCreationTime("C://test.txt", DateTime.Now.AddYears(-));
File.SetLastWriteTime("C://test.txt", DateTime.Now.AddYears(-));
File.SetLastAccessTime("C://test.txt", DateTime.Now.AddYears(-));
FileInfo 和 File 的名称空间是:
System.IO
================================================
以文件只读和隐藏属性为例,其他属性,比如“存档”、“系统”等,方法类似。
读取文件只读和隐藏属性
FileInfo fi = new FileInfo("C://test.txt");
if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
Console.WriteLine("是只读");
}
else
{
Console.WriteLine("不是只读");
} if ((fi.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
Console.WriteLine("是隐藏");
}
else
{
Console.WriteLine("不是隐藏");
}
设置文件只读和隐藏属性
FileInfo fi = new FileInfo("C://test.txt");
fi.Attributes = fi.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden; // 法一
//File.SetAttributes("C://test.txt", fi.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden); // 法二
可以看出,既可通过设置 Attributes 属性,也可通过利用 File 的 SetAttributes 方法来到目的。
说明的是,不管怎样做,都要先获取文件的原属性,如果不获取文件的原属性,直接就是 FileAttributes.ReadOnly | FileAttributes.Hidden,那么,可能会导致一些属性丢失,比如文件以前可能有“存档”属性,直接这样设置的话,存档属性就丢失了。
取消文件只读和隐藏属性
FileInfo fi = new FileInfo("C://test.txt");
fi.Attributes = fi.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden; // 法一
//File.SetAttributes("C://test.txt", fi.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden); // 法二
类似于设置,只是一些运算符号变了。注意,网上的说法是直接设置属性为 FileAttributes.Normal,这是不对的,这不仅取消了只读和隐藏属性,可能还取消了其他一些属性,比如“存档”。
说明
不当的属性设置,可能导致文件无法在 Windows 资源管理器中显示出来,但又确实存在,此时可以利用 FileAttributes.Normal 将文件显示出来,方便操作。
以下转载:
C#File以及FileInfo对文件的操作
使用File操作文件
//使用file的静态方法进行复制
File.Copy(path, destpath);
//使用File的静态方法删除路径下的一个文件
File.Delete(path);
//使用File的静态方法移动路径下的一个文件
File.Move(path, destpath);
File.ReadAllText(path); //打开一个文本文件*.txt ,读取文件中数据,然后关闭该文件
//写入
File.WriteAllText(path, "要写入文件的字符串"); //创建一个文件,向其中写入数据,如果此路径下有同名文件则会覆
PS:对文件进行写入操作,如果路径下有同名文件则会进行覆盖,所以最好进行一次判断,跟用户交互一下在进行覆盖
使用FileInfo操作文件
FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
myfile.CopyTo(destpath); //对文件进行复制操作,复制路径为destpath
myfile.MoveTo(destpath); //进行移动操作
myfile.Delete(); //进行删除操作
获得某一文件或文件夹的详细信息(创建日期,最后一次修改日期等等
FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
DateTime dt = myfile.CreationTime; //获取或设置文件/文件夹的创建日期
string filepath = myfile.DirectoryName; //仅能用于FileInfo,获得完整的路径名,路径+文件名
bool file = myfile.Exists; //此属性的值表示文件或文件夹是否存在,存在会返回True
string fullname = myfile.FullName; //获取文件或文件夹的完整路径名
DateTime lastTime = myfile.LastAccessTime; //获取或设置最后一次访问文件或文件夹的时间
DateTime lastWrite = myfile.LastWriteTime; //获取或设置最后一次修改文件夹或文件夹的时间
string name = myfile.Name; //获取文件名,不能修改哦
long length = myfile.Length; //返回文件的字节大小
//CreationTime,LastAccessTime,LastWriteTime都是可以被修改的。
如何选择用哪一个类? File or FileInfo
Directory/File只包含静态方法,不能被实例化,只需要提供合适的文件系统对象路径就可以使用,使用效率较高
当只对文件或文件夹执行一次操作,使用这些就很有效。
DirectoryInfo/FileInfo 如果使用一个对象执行多个操作,使用这些类就很高效。
因为它们在构造时就读取了文件系统对象的身份验证和其他信息,无论调用了多少方法,都不需要再次读取这些信息。
上面只列出了操作文件,操作文件夹则需要用DirectoryInfo或Directory
用 C# 轻松读取、改变文件的创建、修改、访问时间的更多相关文章
- NIO入门之轻松读取大文件
NIO入门之轻松读取大文件 今天同事碰到了一个问题,从游戏服务器下载下来的输出log有一个多G大.用记事本打不开,EditPlus也打不开,都提示文件太大.用word也打不开,提示文件大于512M.打 ...
- Linux改变文件或目录的访问权限命令
使用 ll 或 ls -l 指令时 第一列会显示出目录下文件的权限 例如∶ -rw-r-r- 横线代表空许可.r代表只读,w代表写,x代表可执行.注意这里共有10个位置.第一个字符指定了文件类型 ...
- C# 轻松读取、改变文件的创建、修改、访问时间 z
// 读取文件的创建.修改.访问时间FileInfo fi = new FileInfo("C://test.txt");Console.WriteLine(fi.Creation ...
- java读取ldif文件并创建新的节点
所需jar包ldap.jar. jldap-4.3-source.jar http://www.java2s.com/Code/Jar/l/Downloadldapjar.htm 浏览器输入http: ...
- delphi获取文件的创建/修改时间、按时间删除指定文件下的文件
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrl ...
- mp4、AAC数据格式、解析文件的创建修改时间
AAC文件 资料: http://blog.csdn.net/u013427969/article/details/53091594 http://blog.chinaunix.net/uid-260 ...
- 八、Delphi10.3读取JSON文件,并修改JSON数组一条内容后保存到文件
一.我们有一个JSON文件,如下: { "在野": [ { "城池": 0, "武将": 74, "登场年": 190 ...
- Qt-QML-C++交互实现文件IO系统-后继-读取XML文件和创建XML文件
在前面两篇中,大致完成了一个文件IO的读和写操作.前面两篇文章链接 http://blog.csdn.net/z609932088/article/details/71488250 http://bl ...
- [添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码
将nobody用户添加到nogroup 组:usermod -g nogroup nobody cat /etc/passwd|grep nobodynobody:x:65534:65534:nobo ...
随机推荐
- clang -rewrite-objc的使用点滴
➠更多技术干货请戳:听云博客 clang -rewrite-objc的作用是把oc代码转写成c/c++代码,我们常用它来窥探OC的一些秘密. 1.最简单的例子 main.m的代码如下: int mai ...
- 【代码笔记】iOS-伸缩式动画
一,效果图. 二,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the ...
- Linux 折腾汇集,实时更新
一.Linux教程 入门教程:http://www.92csz.com/study/linux/ 命令大全:http://man.linuxde.net/ 一.界面: 在Ubuntu.Linux Mi ...
- 网络编程4--毕向东java基础教程视频学习笔记
Day24 06 自定义浏览器-Tomcat服务端07 自定义图形界面浏览器-Tomcat服务端08 URL-URLConnection09 小知识点10 域名解析 06 自定义浏览器-Tomcat服 ...
- YARN中自己总结的几个关键点
以前在Hadoop 1.0中JobTracker主要完成两项功能:资源的管理和作业控制.在集群规模过大的场景下,JobTracker 存在以下不足: 1)JobTracker 单点故障. 2)JobT ...
- Flume应用场景及架构原理
Flume概念 Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. ...
- [20140722] forwarded和forwarding记录
背景: 今天被人文集forwarded和forwarding记录的事情. 简单介绍: 当堆表跟新某一个列的时候发现,不够放了,那么就在那行记录上标记forwarding,并把数据放到另外一个page, ...
- CKEditor与CKFinder的配置(ASP.NET环境)
CKEditor是一个专门使用在网页上的所得文字编辑器,适用于PHP.ASP.NET.Java等后端开发语言.CKEditor原名为FCKeditor,“FCK” 是这个编辑器的作者的名字Freder ...
- request 、response和session的区别
request: 1.request.getParameter("key")接受的是来自客户登陆端的数据,接受的是post或get方式传送的value. 2.请求的默认字符集是IS ...
- 透过byte数组简单分析Java序列化、Kryo、ProtoBuf序列化
序列化在高性能网络编程.分布式系统开发中是举足轻重的之前有用过Java序列化.ProtocolBuffer等,在这篇文章这里中简单分析序列化后的byte数组观察各种序列化的差异与性能,这里主要分析Ja ...