C#中对文件的操作
详细介绍参考:http://blog.csdn.net/wangyue4/article/details/4616801
源码举例:
public class FileSystemManager
{
private static string strRootFolder; static FileSystemManager()
{
strRootFolder = HttpContext.Current.Request.PhysicalApplicationPath;
strRootFolder = strRootFolder.Substring(0, strRootFolder.LastIndexOf(@"\")); } /// <summary>
/// 读根目录
/// </summary>
/// <returns></returns>
public static string GetRootPath()
{
return strRootFolder;
} /// <summary>
/// 写根目录
/// </summary>
/// <param name="path"></param>
public static void SetRootPath(string path)
{
strRootFolder = path;
} /// <summary>
/// 读取列表
/// </summary>
/// <returns></returns>
public static List<FileSystemItem> GetItems()
{
return GetItems(strRootFolder);
} /// <summary>
/// 读取列表
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static List<FileSystemItem> GetItems(string path)
{
string[] folders = Directory.GetDirectories(path);
string[] files = Directory.GetFiles(path);
List<FileSystemItem> list = new List<FileSystemItem>();
foreach (string s in folders)
{
FileSystemItem item = new FileSystemItem();
DirectoryInfo di = new DirectoryInfo(s);
item.Name = di.Name;
item.FullName = di.FullName;
item.CreationDate = di.CreationTime;
item.IsFolder = true;
list.Add(item);
}
foreach (string s in files)
{
FileSystemItem item = new FileSystemItem();
FileInfo fi = new FileInfo(s);
item.Name = fi.Name;
item.FullName = fi.FullName;
item.CreationDate = fi.CreationTime;
item.IsFolder = false;
item.Size = fi.Length;
list.Add(item);
} return list;
} /// <summary>
/// 读取文件夹
/// </summary>
/// <param name="name"></param>
/// <param name="parentName"></param>
public static void CreateFolder(string name, string parentName)
{
DirectoryInfo di = new DirectoryInfo(parentName);
di.CreateSubdirectory(name);
} /// <summary>
/// 删除文件夹
/// </summary>
/// <param name="path"></param>
public static void DeleteFolder(string path)
{
Directory.Delete(path);
} /// <summary>
/// 移动文件夹
/// </summary>
/// <param name="oldPath"></param>
/// <param name="newPath"></param>
public static void MoveFolder(string oldPath, string newPath)
{
Directory.Move(oldPath, newPath);
} /// <summary>
/// 创建文件
/// </summary>
/// <param name="filename"></param>
/// <param name="path"></param>
public static void CreateFile(string filename, string path)
{
FileStream fs = File.Create(path + "\\" + filename);
fs.Close();
} /// <summary>
/// 创建文件
/// </summary>
/// <param name="filename"></param>
/// <param name="path"></param>
/// <param name="contents"></param>
public static void CreateFile(string filename, string path, byte[] contents)
{
FileStream fs = File.Create(path + "\\" + filename);
fs.Write(contents, 0, contents.Length);
fs.Close();
} /// <summary>
/// 删除文件
/// </summary>
/// <param name="path"></param>
public static void DeleteFile(string path)
{
File.Delete(path);
} /// <summary>
/// 移动文件
/// </summary>
/// <param name="oldPath"></param>
/// <param name="newPath"></param>
public static void MoveFile(string oldPath, string newPath)
{
File.Move(oldPath, newPath);
}
/// <summary>
/// 复制文件
/// </summary>
/// <param name="oldPath"></param>
/// <param name="newPath"></param>
public static void CopyFile(string oldPath, string newPath)
{
File.Copy(oldPath, newPath, true);
}
/// <summary>
/// 读取文件信息
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static FileSystemItem GetItemInfo(string path)
{
FileSystemItem item = new FileSystemItem();
if (Directory.Exists(path))
{
DirectoryInfo di = new DirectoryInfo(path);
item.Name = di.Name;
item.FullName = di.FullName;
item.CreationDate = di.CreationTime;
item.IsFolder = true;
item.LastAccessDate = di.LastAccessTime;
item.LastWriteDate = di.LastWriteTime;
item.FileCount = di.GetFiles().Length;
item.SubFolderCount = di.GetDirectories().Length;
}
else
{
FileInfo fi = new FileInfo(path);
item.Name = fi.Name;
item.FullName = fi.FullName;
item.CreationDate = fi.CreationTime;
item.LastAccessDate = fi.LastAccessTime;
item.LastWriteDate = fi.LastWriteTime;
item.IsFolder = false;
item.Size = fi.Length;
}
return item;
} /// <summary>
/// 复制文件夹
/// </summary>
/// <param name="source"></param>
/// <param name="destination"></param>
public static void CopyFolder(string source, string destination)
{
String[] files;
if (destination[destination.Length - 1] != Path.DirectorySeparatorChar)
destination += Path.DirectorySeparatorChar;
if (!Directory.Exists(destination)) Directory.CreateDirectory(destination);
files = Directory.GetFileSystemEntries(source);
foreach (string element in files)
{
if (Directory.Exists(element))
CopyFolder(element, destination + Path.GetFileName(element));
else
File.Copy(element, destination + Path.GetFileName(element), true);
}
}
}
public class FileSystemItem
{
private string _Name;
private string _FullName; private DateTime _CreationDate;
private DateTime _LastAccessDate;
private DateTime _LastWriteDate; private bool _IsFolder; private long _Size;
private long _FileCount;
private long _SubFolderCount; private string _Version; /// <summary>
/// 名称
/// </summary>
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
} /// <summary>
/// 完整目录
/// </summary>
public string FullName
{
get
{
return _FullName;
}
set
{
_FullName = value;
}
} /// <summary>
/// 创建时间
/// </summary>
public DateTime CreationDate
{
get
{
return _CreationDate;
}
set
{
_CreationDate = value;
}
} /// <summary>
/// 是否是文件夹
/// </summary>
public bool IsFolder
{
get
{
return _IsFolder;
}
set
{
_IsFolder = value;
}
} /// <summary>
/// 大小
/// </summary>
public long Size
{
get
{
return _Size;
}
set
{
_Size = value;
}
} /// <summary>
/// 访问时间
/// </summary>
public DateTime LastAccessDate
{
get
{
return _LastAccessDate;
}
set
{
_LastAccessDate = value;
}
} /// <summary>
/// 修改时间
/// </summary>
public DateTime LastWriteDate
{
get
{
return _LastWriteDate;
}
set
{
_LastWriteDate = value;
}
} /// <summary>
/// 文件数
/// </summary>
public long FileCount
{
get
{
return _FileCount;
}
set
{
_FileCount = value;
}
} /// <summary>
/// 文件夹数
/// </summary>
public long SubFolderCount
{
get
{
return _SubFolderCount;
}
set
{
_SubFolderCount = value;
}
} /// <summary>
/// 版本
/// </summary>
/// <returns></returns>
public string Version()
{
if (_Version == null)
_Version = GetType().Assembly.GetName().Version.ToString(); return _Version;
} }
C#中对文件的操作的更多相关文章
- linux下拷贝命令中的文件过滤操作记录
在日常的运维工作中,经常会涉及到在拷贝某个目录时要排查其中的某些文件.废话不多说,下面对这一需求的操作做一记录: linux系统中,假设要想将目录A中的文件复制到目录B中,并且复制时过滤掉源目录A中的 ...
- [转]Windows系统中监控文件复制操作的几种方式
1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得到源和目标文件名. 可以控制拒绝操作. 缺点: 不能对文件进行控制. 只对Shell文件操作有效, 对原生 ...
- UWP中的文件相关操作
最近开始做UWP开发,图省事儿就把自己之前一个Winform项目的一部分代码拷贝到了新写的UWP项目中来.整出了一些幺蛾子,下面做一个记录. 首先提一个重点就是:UWP里关于文件的操作尽量用Stora ...
- grep sed awk 3个Linux中对文件内容操作的命令
在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...
- Windows系统中监控文件复制操作的几种方式
http://blog.sina.com.cn/s/blog_4596beaa0100lp4y.html 1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得 ...
- Android中的文件权限操作
默认本工程创建的文件本工程对其有读写权限. 我们可以通过context.openFileOutput("文件名", 模式): 我们可以创建私有, 共有, 只读, 只写文件, 默认的 ...
- linux中普通的文件查看操作(cat、more、less、head、tail)
cat:基本是最常用的查看文件内容的linux命令. more 也是用来查看一个文件的内容.当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了.当 ...
- Ubuntu中拷贝文件的操作
cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目 ...
- Python中的文件IO操作(读写文件、追加文件)
Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关闭,因为在磁盘上读写文件的功能是由操作系统提供的,文件作为对象,被打开后会占用操作系统的资源,而操作系统在同一 ...
- .NET中的文件IO操作实例
1.写入文件代码: //1.1 生成文件名和设置文件物理路径 Random random = new Random(DateTime.Now.Millisecond); ); string Physi ...
随机推荐
- jqGrid一些操作
formatter:function(cellvalue,options,rowObject){} 在格式化行的时候这三个参数 cellvalue行数, options配置信息, rowObject行 ...
- fedora audacious 不能播放音乐
采用命令sudo dnf search audacious 可以看到 audacious-plugins-freeworld-mp3.x86_64 : MP3 playback plugin for ...
- Surround the Trees(凸包求周长)
Surround the Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- window.open 使用方法总结
[1.最基本的弹出窗口代码] <SCRIPT LANGUAGE="javascript"> <!-- window.open ('test.html') - ...
- linux命令--sysctl
sysctl sysctl被用来在执行时配置内核参数.这些参数都存储在/proc/sys/(以键-值对形式存储)中.你可以用sysctl来读和写数据 命令参数 variable 要读的键值的名字 ...
- UIBezierPath详解
使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线 ...
- IPv6-only 的兼容性解决方案
前几天Apple宣布 6月1日后所有应用必须支持IPv6-only网络 今天抽空看了下这方面的知识 首先解释下IPv6的是什么? 维基百科的定义如下:IPv6是Internet Protocol ve ...
- Android 中 ListView Adapter getView 被多次调用问题 解决方法
执行多次原因是因为每显示一个VIew,它都去测量view的高度,执行measure方法,导致getView执行多次. 解决方法是将 ListView 的 layout_width 设置为 fill_p ...
- 10个值得我们关注的python博客
大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...
- 如何删除openfire for苹果,彻底卸载!
早前在MAC上安装了一个名为openfire的服务插件,用这个进行一些插件安装和设置,使ichat能登录MSN帐号.但现在最新的MSN已经有所改善,支持视频与语音,离线信息接收.而openfire有个 ...