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

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

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

System.IO.Directory.CreateDirectory(path);

 

String path=@”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文件所在的绝对路径

String locationPath =

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('//');

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

String  strParticalPath;

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

  {

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

  }

 

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

System.Diagnostics.Process.Start(path);

path为文件夹目录

System.IO.File.Open(path2FileMode.Open);

String path2=@”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.             获取一个文件夹中所有文件的大小

long fileSize = 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()比较

DirectoryInfo dir = new DirectoryInfo(path);// path为文件夹路径

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

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

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

 

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

        public static int GetFileCount(string path)

        {

            System.IO.DirectoryInfo dir = new DirectoryInfo(path);

            int count = dir.GetFiles().Length;

            foreach (DirectoryInfo d in dir.GetDirectories())

            {

                count += GetFileCount(d.FullName);

            }

            return count;

        }

 

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

public static long FolderSize(string path)

{

   long Fsize = 0;

   try

   {

      FileInfo[] files = (new DirectoryInfo(path)).GetFiles();

 

      foreach (FileInfo file in files)

      {

         Fsize += file.Length;

      }

 

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

 

      foreach (DirectoryInfo folder in folders)

      {

         Fsize += FolderSize(folder.FullName);

      }

    }

    catch (Exception ex)

    {

       return Fsize;

    }

    return Fsize;

 }

 

14.             文件读写操作

Static void Main(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";

 

FileStream mystream = new FileStream(fileName, FileMode.OpenOrCreate);

StreamWriter Mywriter = new StreamWriter(mystream, Encoding.Default);

 

string text = "";

 

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,
            //
            // 摘要:
            //     文件系统目录,包含在所有用户的“开始”菜单上都出现的程序和文件夹。此特殊文件夹仅对 Windows NT 系统有效。
            CommonStartMenu = 22,
            //
            // 摘要:
            //     存放多个应用程序共享的组件的文件夹。此特殊文件夹仅对 Windows NT、Windows 2000 和 Windows XP 系统有效。
            CommonPrograms = 23,
            //
            // 摘要:
            //     文件系统目录,包含在所有用户的“启动”文件夹中都出现的程序。此特殊文件夹仅对 Windows NT 系统有效。
            CommonStartup = 24,
            //
            // 摘要:
            //     文件系统目录,包含在所有用户桌面上出现的文件和文件夹。此特殊文件夹仅对 Windows NT 系统有效。
            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,
            //
            // 摘要:
            //     文件系统目录,包含所有用户都可以使用的模板。此特殊文件夹仅对 Windows NT 系统有效。
            CommonTemplates = 45,
            //
            // 摘要:
            //     文件系统目录,包含所有用户共有的文档。此特殊文件夹仅对装有 Shfolder.dll 的 Windows NT 系统Windows 95 和 Windows
            //     98 系统有效。
            CommonDocuments = 46,
            //
            // 摘要:
            //     文件系统目录,包含计算机所有用户的管理工具。
            CommonAdminTools = 47,
            //
            // 摘要:
            //     文件系统目录,用于存储各个用户的管理工具。Microsoft Management Console (MMC) 会将自定义的控制台保存在此目录中,并且此目录将随用户一起漫游。
            AdminTools = 48,
            //
            // 摘要:
            //     文件系统目录,充当所有用户共有的音乐文件的存储库。
            CommonMusic = 53,
            //
            // 摘要:
            //     文件系统目录,充当所有用户共有的图像文件的存储库。
            CommonPictures = 54,
            //
            // 摘要:
            //     文件系统目录,充当所有用户共有的视频文件的存储库。
            CommonVideos = 55,
            //
            // 摘要:
            //     文件系统目录,包含资源数据。
            Resources = 56,
            //
            // 摘要:
            //     文件系统目录,包含本地化资源数据。
            LocalizedResources = 57,
            //
            // 摘要:
            //     为了实现向后兼容,Windows Vista 中可以识别此值,但该特殊文件夹本身已不再使用。
            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 用作文档模板的公共储存库的目录。

  

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

例子:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值