详细介绍参考: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#中对文件的操作的更多相关文章

  1. linux下拷贝命令中的文件过滤操作记录

    在日常的运维工作中,经常会涉及到在拷贝某个目录时要排查其中的某些文件.废话不多说,下面对这一需求的操作做一记录: linux系统中,假设要想将目录A中的文件复制到目录B中,并且复制时过滤掉源目录A中的 ...

  2. [转]Windows系统中监控文件复制操作的几种方式

    1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得到源和目标文件名. 可以控制拒绝操作. 缺点: 不能对文件进行控制. 只对Shell文件操作有效, 对原生 ...

  3. UWP中的文件相关操作

    最近开始做UWP开发,图省事儿就把自己之前一个Winform项目的一部分代码拷贝到了新写的UWP项目中来.整出了一些幺蛾子,下面做一个记录. 首先提一个重点就是:UWP里关于文件的操作尽量用Stora ...

  4. grep sed awk 3个Linux中对文件内容操作的命令

    在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...

  5. Windows系统中监控文件复制操作的几种方式

    http://blog.sina.com.cn/s/blog_4596beaa0100lp4y.html 1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得 ...

  6. Android中的文件权限操作

    默认本工程创建的文件本工程对其有读写权限. 我们可以通过context.openFileOutput("文件名", 模式): 我们可以创建私有, 共有, 只读, 只写文件, 默认的 ...

  7. linux中普通的文件查看操作(cat、more、less、head、tail)

    cat:基本是最常用的查看文件内容的linux命令. more 也是用来查看一个文件的内容.当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了.当 ...

  8. Ubuntu中拷贝文件的操作

    cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目 ...

  9. Python中的文件IO操作(读写文件、追加文件)

    Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关闭,因为在磁盘上读写文件的功能是由操作系统提供的,文件作为对象,被打开后会占用操作系统的资源,而操作系统在同一 ...

  10. .NET中的文件IO操作实例

    1.写入文件代码: //1.1 生成文件名和设置文件物理路径 Random random = new Random(DateTime.Now.Millisecond); ); string Physi ...

随机推荐

  1. 我用的比较少的CSS选择器

    选择器 描述 [attribute] 用于选取带有指定属性的元素. [attribute=value] 用于选取带有指定属性和值的元素. [attribute~=value] 用于选取属性值中包含指定 ...

  2. JavaScript时钟实例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. codeforces 629D. Babaei and Birthday Cake

    题目链接 大意就是给出一个序列, 然后让你从中找出一个严格递增的数列, 使得这一数列里的值加起来最大. 用线段树, 先将数列里的值离散,然后就是线段树单点更新, 区间查询最值. 具体看代码. #inc ...

  4. poj 2187 Beauty Contest 最远点距

    /** 求出凸包枚举每个点的矩距离即可 因为凸包上的点可定不多.. 学习: 刚开始WA 了一次,,因为用int 存的, 一看discuss 里提供的数据,想起来,,应该是越界了.. 后来用longlo ...

  5. jQuery 动态元素添加

    有这么一道题 <!DOCTYPE html> <head> <title>前端工程师面试题</title> <meta http-equiv=&q ...

  6. hdu 1236 1.3.2排名

    排名 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission ...

  7. 警告:‘xxxx’ 将随后被初始化

    关于编译报警告.本次是接手一个新手的代码,总共不到1K行的代码.两个类.编译的时候报的警告,本来也不打算管理这个事情的.要求也不会有那么严格.但上午看完代码后,觉得毕竟是新手写的代码,还是有很多需要修 ...

  8. goahead cgi 及出现的问题解决

    1. route.txt    配置cgi路径 route uri=/cgi-bin dir=/web handler=cgi 2.交叉编译生成cgi goahead  源码路径下  ./test/c ...

  9. main函数的参数问题 (转载)

    void main(int arg ,char *arv[]){} arg -- 命令行参数总个数arv[0] -- 参数1,程序名 arv[1] -- 参数2,字符串 arv[2] -- 参数3,字 ...

  10. ZOJ 1893 A Multiplication Game 【简单博弈】

    感觉ZJU上有不少博弈的题目. 这道题目还是比较好理解的,题目大概意思是:两人轮流乘一个2-9的数,从1开始乘,求谁的乘积先大于N. 还是寻找必败点必胜点,不过在这个题目里转换成了寻找必败区间必胜区间 ...