`
devgis
  • 浏览: 133780 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

C#对Windows文件/文件夹/目录的一些操作总结

 
阅读更多

1.在一个目录下创建一个文件夹

if (!System.IO.Directory.Exists(path))

System.IO.Directory.CreateDirectory(path);

Stringpath=@”C:/新文件夹的名字

2.时间的字符串表示法20080616091219

System.DateTime.Now.ToString("yyyyMMdd"), System.DateTime.Now.ToString("HHmmss")

DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")

3.获取系统的特殊文件的路径

String path =Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

//有下划线Environment.SpecialFolder的枚有很

4.拷贝一个文件到另一个目录下

System.IO.File.Copy(要拷贝的文件目录,目的目录);

注意:两个目录都要是具体的文件名,不能是文件夹。

5.取当前程序集。EXE文件所在的绝对路径

StringlocationPath=

System.Reflection.Assembly.GetExecutingAssembly().Location

6.取得运行中的程序名字和路径(和上面的结果一样)

System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Substring(8);

System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
的意思就是取得运行中的程序名字和路径

但前面有file:///重要的格式

file:///D:/Project/bin/Debug/WindowsApplication.EXE


System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Substring(8);
的意思就是从第8位开始取得字符串
D:/Project/bin/Debug/WindowsApplication.EXE

7.将文件目录按/号分割开(如上例中的目录)

string[] strLoc;

strLoc = locationPath.Split('//');

想取到哪一级目录就取到哪一级目录

StringstrParticalPath;

for (int j = 0; j < strLoc.Length - 1; j++)

{

strParticalPath += strLoc[j] + "//";

}

8.打开某个文件夹/文件

System.Diagnostics.Process.Start(path);

path为文件夹目录

System.IO.File.Open(path2,FileMode.Open);

Stringpath2=@”C:/新文件夹的名字/文件的名字

9.取得目录(m_path)下所有文件的文件名

//返回的是m_path目录里每一个.txt文件的完整的路径

//其中m_path为目录的完整路径

string[] fileName = System.IO.Directory.GetFiles(m_path,"*.txt");

//取得第一个.txt文件的路径

m_allFilePath = fileName[0];

//如果目录下还有子目录就用下面这个

string[]fileNames=System.IO.Directory.GetFiles(m_path,"*",SearchOption.AllDirectories);

10.获取一个文件夹中所有文件的大小

longfileSize = 0;

string sOutDir = @"D:/data/CD01";

DirectoryInfo dirInfo = new DirectoryInfo(sOutDir);

foreach (FileInfo fileInfo in dirInfo.GetFiles())

{

fileSize += fileInfo.Length;

}

11.DirectoryInfo.GetFiles();DirectoryInfo.GetDirectories();DirectoryInfo.GetFileSystemInfos()比较

DirectoryInfodir =newDirectoryInfo(path);//path为文件夹路径

FileInfo[] a = dir.GetFiles();//获取路径下文件的名字

DirectoryInfo[] b = dir.GetDirectories();//获取路径下文件夹的名字

FileSystemInfo[] c = dir.GetFileSystemInfos();//获取路径下文件和文件夹的名字

12.一个文件夹(包括子文件夹)中所有文件的个数

publicstaticintGetFileCount(stringpath)

{

System.IO.DirectoryInfodir =newDirectoryInfo(path);

intcount = dir.GetFiles().Length;

foreach(DirectoryInfodindir.GetDirectories())

{

count += GetFileCount(d.FullName);

}

returncount;

}

13.一个文件夹(包括子文件夹)中所有文件的大小

publicstaticlongFolderSize(stringpath)

{

longFsize = 0;

try

{

FileInfo[] files = (newDirectoryInfo(path)).GetFiles();

foreach(FileInfofileinfiles)

{

Fsize += file.Length;

}

DirectoryInfo[] folders = (newDirectoryInfo(path)).GetDirectories();

foreach(DirectoryInfofolderinfolders)

{

Fsize += FolderSize(folder.FullName);

}

}

catch(Exceptionex)

{

returnFsize;

}

returnFsize;

}

14.文件读写操作

Static voidMain(string[] args)

{

const string filePath = @””;

FileStream fs = null;

try

{

Console.WriteLine(“开始往文件中写内容”);

fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);

byte[] bytes = Encoding.Default.GetBytes(“这是一个字符串,将插入到文本文件中”);

//向流中写入指定的字节数组

fs.Write(bytes, 0, bytes.Length);

//将缓存区的内容存储到媒体并清除缓存区。

fs.Flush();

//将流指针移到开头

fs.Seek(0, SeekOrigin.Begin);

byte[] bytes2 = new byte[bytes.Length];

fs.Read(bytes2, 0, bytes.Length);

string str = Encoding.Default.GetString(bytes2);

Console.WriteLine(“从文件中读出的字符串为”+ Environment.NewLine+str);

}

catch(IOException ex)

{

Console.WriteLine(“发生的文件处理的错误!”+ ex.Message);

}

finally

{

Console.WriteLine(“不论是否发生异常,都会执行finally到这里”);

if(fs != null)

{

fs.Close();

}

Console.ReadLine();

}

}

15.生成一个.txt文件,并往里写一串字符串。

fileName =@"C:/a.txt";

FileStreammystream =newFileStream(fileName,FileMode.OpenOrCreate);

StreamWriterMywriter =newStreamWriter(mystream,Encoding.Default);

stringtext ="";

Mywriter.Write(text);

Mywriter.Close();

mystream.Close();

16.删去某个文件

//m_allFilePath为文件的完整路径,包括后缀

System.IO.File.Delete(m_allFilePath);

删除文件夹

void DeleteDirectory(string path)
{
DirectoryInfo dir = new DirectoryInfo(path);
foreach (var item in dir.GetDirectories())
{
item.Delete(true);

}
dir.Delete(true);
}

设置环境变量

/// <summary>
/// 设置windows环境变量
/// </summary>
/// <param name="name">变量名称</param>
/// <param name="value">变量值</param>
public static void SetEnvironmentVariable(string name, string value)
{
RegistryKey regLocalMachine = Registry.LocalMachine;
RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEM
RegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);
RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);
RegistryKey regManager = regControl.OpenSubKey("Session Manager", true);
RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);
regEnvironment.SetValue(name, value);
}

文件夹、文件添加权限

// <summary>
/// Adds an ACL entry on the specified directory for the specified account.
/// This function was taken directly from MSDN. It adds security rights to a folder
/// </summary>
/// <param name="FileName"></param>
/// <param name="Account">like @"BUILTIN\Administrators" or @"BUILTIN\Users" </param>
/// <param name="Rights">like FileSystemRights.FullControl</param>
/// <param name="ControlType">like AccessControlType.Allow</param>
///

public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);

// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();

// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account, Rights, ControlType));

// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}

/// <summary>
/// Adds an ACL entry on the specified directory for the specified account.
/// This function was taken directly from MSDN. It adds security rights to a file
/// </summary>
/// <param name="FileName"></param>
/// <param name="Account">like @"BUILTIN\Administrators" or @"BUILTIN\Users" </param>
/// <param name="Rights">like FileSystemRights.FullControl</param>
/// <param name="ControlType">like AccessControlType.Allow</param>
public static void AddFileSecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new FileInfo object.
FileInfo fInfo = new FileInfo(FileName);

// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = fInfo.GetAccessControl();

// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));

// Set the new access settings.
fInfo.SetAccessControl(fSecurity);
}

读取windows日志

/// <summary>
/// 读取windows系统日志
/// </summary>
/// <returns></returns>
public static string ReadWindowsLog()
{
string[] logs = new string[] { "Application", "System", "Security" };

/*清空所有日志*/
//EventLog eventlog = new EventLog();
//foreach (var item in logs)
//{
// eventlog.Log = item;
// eventlog.Clear();
//}

/*清空所有日志*/

StringBuilder sb = new StringBuilder();

foreach (string log in logs)
{
EventLog myLog = new EventLog();
myLog.Log = log;
//myLog.MachineName = "rondi-agt0qf9op";
foreach (EventLogEntry entry in myLog.Entries)
{
//EventLogEntryType枚举包括:
//Error 错误事件。
//FailureAudit 失败审核事件。
//Information 信息事件。
//SuccessAudit 成功审核事件。
//Warning 警告事件。
if (entry.EntryType == EventLogEntryType.Error || entry.EntryType == EventLogEntryType.Warning)
{
sb.Append(log);
sb.Append(entry.EntryType.ToString());
sb.Append(entry.TimeWritten.ToString());
sb.Append(entry.Message + "\r\n");
}
}
}
return sb.ToString();
}

C#获取系统特殊文件夹路径
2012-03-31 11:37

主要方法就是System.Environment.GetFolderPath(SpecialFolder);

以下是这个枚举

public enum SpecialFolder
{
// 摘要:
// 逻辑桌面,而不是物理文件系统位置。
Desktop = 0,
//
// 摘要:
// 包含用户程序组的目录。
Programs = 2,
//
// 摘要:
// 用作文档的公共储存库的目录。
Personal = 5,
//
// 摘要:
// “我的文档”文件夹
MyDocuments = 5,
//
// 摘要:
// 用作用户收藏夹项的公共储存库的目录。
Favorites = 6,
//
// 摘要:
// 对应于用户的“启动”程序组的目录。
Startup = 7,
//
// 摘要:
// 包含用户最近使用过的文档的目录。
Recent = 8,
//
// 摘要:
// 包含“发送”菜单项的目录。
SendTo = 9,
//
// 摘要:
// 包含“开始”菜单项的目录。
StartMenu = 11,
//
// 摘要:
// “我的音乐”文件夹
MyMusic = 13,
//
// 摘要:
// 文件系统目录,充当属于某个用户的视频的存储库。
MyVideos = 14,
//
// 摘要:
// 用于物理上存储桌面上的文件对象的目录。
DesktopDirectory = 16,
//
// 摘要:
// “我的电脑”文件夹
MyComputer = 17,
//
// 摘要:
// 文件系统目录,包含“网上邻居”虚拟文件夹中可能存在的链接对象。
NetworkShortcuts = 19,
//
// 摘要:
// 包含字体的虚拟文件夹
Fonts = 20,
//
// 摘要:
// 用作文档模板的公共储存库的目录。
Templates = 21,
//
// 摘要:
// 文件系统目录,包含在所有用户的“开始”菜单上都出现的程序和文件夹。此特殊文件夹仅对WindowsNT系统有效。
CommonStartMenu = 22,
//
// 摘要:
// 存放多个应用程序共享的组件的文件夹。此特殊文件夹仅对WindowsNT、Windows2000 和WindowsXP系统有效。
CommonPrograms = 23,
//
// 摘要:
// 文件系统目录,包含在所有用户的“启动”文件夹中都出现的程序。此特殊文件夹仅对WindowsNT系统有效。
CommonStartup = 24,
//
// 摘要:
// 文件系统目录,包含在所有用户桌面上出现的文件和文件夹。此特殊文件夹仅对WindowsNT系统有效。
CommonDesktopDirectory = 25,
//
// 摘要:
// 目录,它用作当前漫游用户的应用程序特定数据的公共储存库。
ApplicationData = 26,
//
// 摘要:
// 文件系统目录,包含“打印机”虚拟文件夹中可能存在的链接对象。
PrinterShortcuts = 27,
//
// 摘要:
// 目录,它用作当前非漫游用户使用的应用程序特定数据的公共储存库。
LocalApplicationData = 28,
//
// 摘要:
// 用作 Internet 临时文件的公共储存库的目录。
InternetCache = 32,
//
// 摘要:
// 用作 Internet Cookie 的公共储存库的目录。
Cookies = 33,
//
// 摘要:
// 用作 Internet 历史记录项的公共储存库的目录。
History = 34,
//
// 摘要:
// 目录,它用作所有用户使用的应用程序特定数据的公共储存库。
CommonApplicationData = 35,
//
// 摘要:
//Windows目录或 SYSROOT。它与 %windir% 或 %SYSTEMROOT% 环境变量相对应。
Windows= 36,
//
// 摘要:
// “System”目录。
System = 37,
//
// 摘要:
// “Program files”目录。
ProgramFiles = 38,
//
// 摘要:
// “我的图片”文件夹
MyPictures = 39,
//
// 摘要:
// 用户的配置文件文件夹。应用程序不应在此级别上创建文件或文件夹;它们应将其数据放在 System.Environment.SpecialFolder.ApplicationData
// 所引用的位置之下。
UserProfile = 40,
//
// 摘要:
//Windows“System”文件夹
SystemX86 = 41,
//
// 摘要:
// “Program Files”文件夹
ProgramFilesX86 = 42,
//
// 摘要:
// 用于应用程序间共享的组件的目录。
CommonProgramFiles = 43,
//
// 摘要:
// “Program Files”文件夹
CommonProgramFilesX86 = 44,
//
// 摘要:
// 文件系统目录,包含所有用户都可以使用的模板。此特殊文件夹仅对WindowsNT系统有效。
CommonTemplates = 45,
//
// 摘要:
// 文件系统目录,包含所有用户共有的文档。此特殊文件夹仅对装有 Shfolder.dll 的WindowsNT系统Windows95 和Windows
// 98系统有效。
CommonDocuments = 46,
//
// 摘要:
// 文件系统目录,包含计算机所有用户的管理工具。
CommonAdminTools = 47,
//
// 摘要:
// 文件系统目录,用于存储各个用户的管理工具。Microsoft Management Console (MMC) 会将自定义的控制台保存在此目录中,并且此目录将随用户一起漫游。
AdminTools = 48,
//
// 摘要:
// 文件系统目录,充当所有用户共有的音乐文件的存储库。
CommonMusic = 53,
//
// 摘要:
// 文件系统目录,充当所有用户共有的图像文件的存储库。
CommonPictures = 54,
//
// 摘要:
// 文件系统目录,充当所有用户共有的视频文件的存储库。
CommonVideos = 55,
//
// 摘要:
// 文件系统目录,包含资源数据。
Resources = 56,
//
// 摘要:
// 文件系统目录,包含本地化资源数据。
LocalizedResources = 57,
//
// 摘要:
// 为了实现向后兼容,WindowsVista 中可以识别此值,但该特殊文件夹本身已不再使用。
CommonOemLinks = 58,
//
// 摘要:
// 文件系统目录,充当等待写入 CD 的文件的临时区域。
CDBurning = 59,
}

全部输出一遍

全部输出一遍

Type specialFolder = typeof(System.Environment.SpecialFolder);
foreach (var s in Enum.GetNames(specialFolder))
{
string value = Enum.Format(specialFolder, Enum.Parse(specialFolder, s), "d");
textBox1.AppendText(string.Format("{0,-11}={1} \r\n", s, value));
textBox1.AppendText(string.Format("'{0}' \r\n", (System.Environment.SpecialFolder)(int.Parse(value))));
textBox1.AppendText(Environment.GetFolderPath((System.Environment.SpecialFolder)(int.Parse(value)))+"\r\n");
}

此处直接输出到textBox1中了 这个自己增加进行测试吧。


系统特殊文件夹是包含公共信息的文件夹,如“Program Files”、“Programs”、“System”或“Startup”。特殊文件夹在默认情况下由系统设置,或者由用户在安装 Windows 的某个版本时显式进行设置。

Environment.GetFolderPath 方法
获取指向由指定枚举标识的系统特殊文件夹的路径。

命名空间:System
public static string GetFolderPath ( SpecialFolder folder );

参数
folder 标识系统特殊文件夹的枚举常数。如下:

ApplicationData 目录,它用作当前漫游用户的应用程序特定数据的公共储存库。
漫游用户在网络上的多台计算机上工作。漫游用户的配置文件保存在网络服务器上,当用户登录到某个系统上时,它会加载到该系统

CommonApplicationData 目录,它用作所有用户使用的应用程序特定数据的公共储存库。
CommonProgramFiles 用于应用程序间共享的组件的目录。
Cookies 用作 Internet Cookie 的公共储存库的目录。
Desktop 逻辑桌面,而不是物理文件系统位置。
DesktopDirectory 用于物理上存储桌面上的文件对象的目录。
不应将此目录与桌面文件夹本身混淆,后者是虚拟文件夹

Favorites 用作用户收藏夹项的公共储存库的目录。
History 用作 Internet 历史记录项的公共储存库的目录。
InternetCache 用作 Internet 临时文件的公共储存库的目录。
LocalApplicationData 目录,它用作当前非漫游用户使用的应用程序特定数据的公共储存库。
MyComputer “我的电脑”文件夹
MyMusic “My Music”文件夹
MyPictures “My Pictures”文件夹
Personal 用作文档的公共储存库的目录。
ProgramFiles “Program files”目录。
Programs 包含用户程序组的目录。
Recent 包含用户最近使用过的文档的目录。
SendTo 包含“发送”菜单项的目录。
StartMenu 包含“开始”菜单项的目录。
Startup 对应于用户的“启动”程序组的目录。
每当用户登录、启动 Windows NT 或更高版本或启动 Windows 98 时,系统均会启动这些程序。

System “System”目录。
Templates 用作文档模板的公共储存库的目录。



返回值
如果指定系统的特殊文件夹实际存在于您的计算机上,则为到该文件夹的路径;否则为空字符串 ("")。 如果系统未创建文件夹、已删除现有文件夹,或者文件夹是不对应物理路径的虚拟目录(例如“我的电脑”),则该文件夹不会实际存在。

例子:

StringPath=Environment.GetFolderPath(Environment.SpecialFolder.Favorites);//返回收藏夹位置


分享到:
评论

相关推荐

    C#写的Windows文件资源管理器

    1. 实现了对文件、文件夹的复制、粘贴、剪切、删除功能; 2.实现了对文件夹的双击打开、对多种类型的文件的双击打开查看功能; 3.实现了主窗体左边驱动器树形视图(显示各驱动器及内部各文件夹列表)、右边文件列表...

    C# 文件 文件夹 解除占用

    Unlock Monopoly 文件/文件夹 解除占用或直接删除。 编程语言:C# 这个就不用过多功能描述...文件夹解除占用:遍历文件夹所有文件,判断是否被占用,先解除文件占用,后解除文件夹占用,然后删除文件,最后删除文件夹。

    C#对API Windows文件文件夹目录

    做为程序员,我们需要了解API从字面上了解便是编程接口,因此,做为开发者,需要了解的只是API的使用方法.

    C# 批量删除文件,文件夹源代码

    C#弄的一个批量删除指定目录下的文件夹或者文件的程序,对清理一些垃圾文件有点用

    C#调用系统API压缩文件及文件夹

    该方法包含两种方案解压和压缩文件夹及文件 1.常用的压缩,工程中引用该文件,该文件为开源方法,引用后直接调用Business.cs的ZipFileMain方法即可压缩文件及文件夹。 2.调用系统API方法压缩,该文件为调用系统API的...

    Windows批量去除多层文件夹冗余层空文件夹清理软件.exe

    当我们下载的大量文件,解压后发现一层套一层,真的很是烦恼,一个个的剪切、复制,真是烦不胜烦,有了这个小工具,就可以去除父文件夹内所有单文件夹,不管多少层,指导出现超过一个文件或文件夹。这个很简单,就不...

    访问共享文件夹

    通过C#语言调用API,实现了程序对服务器共享文件夹的访问操作,可以扩展进行服务器共享文件夹内的创建、删除、读写等操作

    C# 创建删除文件夹

    这是一个基于c#的windows应用程序,程序不大,主要功能是实现文件夹的创建和删除。

    c++文件文件夹混合多选对话框

    文件文件夹多选对话框。基于MFC的文件选择对话框进行的改造,实现了同时选择多个文件和文件夹的功能。 对于在系统虚拟目录“库”文件夹中进行选择文件和文件夹也做了特殊的处理。 在其他语言(比如c#)中也可以...

    C# 对文件与文件夹的操作包括删除、移动与复制

    在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类。文件夹(Folder)是只在Windows操作系统中使用的名词。在操作系统的理论中,人们更习惯于...

    C#开发简单的windows Explorer文件管理

    C#开发的简单的windows Explorer文件管理 能够查看文件夹,文件,运行文件及程序

    C#制作的windows系统文件快速搜索工具,读取USN,易用性与速度都已优化的很好。程序为免安装的exe文件。

    C#.net 做的文件搜索工具(windows)。原理是读取ntfs的USN文件日志,然后内建索引加速文件搜索过程。 1、列表文件支持批量处理(删除、复制、复制文件名路径、打开、重命名),或者引用系统菜单。 2、支持拼音首...

    定时自动删除指定文件夹下文件的Winform应用程序

    这是一个可以定时自动删除指定文件夹下文件的Winform应用程序,该程序只适用Windows系统环境,使用.net3.5框架开发,主要包含如下功能: ①可以选择需要删除文件的文件夹(或者直接复制需删除的文件夹路径) ①可以...

    C# 实现Windows的资源管理器

    C# 实现Windows的资源管理器,实现文件、文件夹的新建、粘贴、剪切、复制、删除和查看属性等功能。内附全部代码。

    windows文件及文件夹权限管理

    如想要添加一个文件或文件夹访问用户并为其设置权限的话,其实在.NET中一切的操作和编程变的非常的简单而明了。本例就是解决此问题的C#实例。稍做修改即可作为VB之用。

    文件目录及文件管理(c#源码)

    类似windows的简单文件管理模块(文件目录及文件列表显示、文件批量上传、文件类型显示、文件目录管理) C#源码文件,项目中直接引入就可以使用! 上传是借助CFUpdate上传组件的简单应用。

    C#自己自学的文件复制程序带进度条

    C#自己自学的文件复制程序带进度条,好不容易码出来的,初学者真是难

    chrome打开共享文件夹完美方案

    通过链接可以访问本地目录、共享目录、本地文件、共享文件(支持所有浏览器) 优化点 1、支持中文路径 2、支持文件夹名中含有空格 3、点击链接时直接打开(和IE8效果一样) 使用方法 1.客户端:【右键以管理...

    Windows中使用C#为文件夹和文件编写密码锁的示例分享

    主要介绍了Windows中使用C#为文件夹和文件编写密码锁的示例分享,特别是文件锁可以针对各种类型的文件输入密码进行加密解密,非常实用,需要的朋友可以参考下

    C#文件夹复制

    windows文件夹复制小程序,帮别人做的小作业 会复制所选文件夹和文件夹内所有文件

Global site tag (gtag.js) - Google Analytics