• 【转】c#文件操作大全(一)


    1.创建文件夹
    //using System.IO;
    Directory.CreateDirectory(%%1);

    2.创建文件
    //using System.IO;
    File.Create(%%1);

    3.删除文件
    //using System.IO;
    File.Delete(%%1);

    4.删除文件夹
    //using System.IO;
    Directory.Delete(%%1);

    5.删除一个目录下所有的文件夹
    //using System.IO;
    foreach (string dirStr in Directory.GetDirectories(%%1))
    {
     DirectoryInfo dir = new DirectoryInfo(dirStr);
     ArrayList folders=new ArrayList();
     FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
     for (int i = 0; i < folders.Count; i++)
     {
      FileInfo f = folders[i] as FileInfo;
      if (f == null)
      {
       DirectoryInfo d = folders[i] as DirectoryInfo;
       d.Delete();
      }
     }
    }

    6.清空文件夹
    //using System.IO;
    Directory.Delete(%%1,true);
    Directory.CreateDirectory(%%1);

    7.读取文件
    //using System.IO;
    StreamReader s = File.OpenText(%%1);
    string %%2 = null;
    while ((%%2 = s.ReadLine()) != null){
     %%3
    }
    s.Close();

    8.写入文件
    //using System.IO;
    FileInfo f = new FileInfo(%%1);
    StreamWriter w = f.CreateText();
    w.WriteLine(%%2);
    w.Close();

    9.写入随机文件
    //using System.IO;
    byte[] dataArray = new byte[100000];//new Random().NextBytes(dataArray);
    using(FileStream FileStream = new FileStream(%%1, FileMode.Create)){
    // Write the data to the file, byte by byte.
     for(int i = 0; i < dataArray.Length; i++){
      FileStream.WriteByte(dataArray[i]);
     }
    // Set the stream position to the beginning of the file.
     FileStream.Seek(0, SeekOrigin.Begin);
    // Read and verify the data.
     for(int i = 0; i < FileStream.Length; i++){
      if(dataArray[i] != FileStream.ReadByte()){
       //写入数据错误
       return;
      }
     }
    //"数据流"+FileStream.Name+"已验证"
    }

    10.读取文件属性
    //using System.IO;
    FileInfo f = new FileInfo(%%1);//f.CreationTime,f.FullName
    if((f.Attributes & FileAttributes.ReadOnly) != 0){
     %%2
    }
    else{
     %%3
    }

    11.写入属性
    //using System.IO;
    FileInfo f = new FileInfo(%%1);
    //设置只读
    f.Attributes = myFile.Attributes | FileAttributes.ReadOnly;
    //设置可写
    f.Attributes = myFile.Attributes & ~FileAttributes.ReadOnly;

    12.枚举一个文件夹中的所有文件夹
    //using System.IO;
    foreach (string %%2 in Directory.GetDirectories(%%1)){
     %%3
    }


    13.复制文件夹

    string path = (%%2.LastIndexOf("") == %%2.Length - 1) ? %%2 : %%2+"";
    string parent = Path.GetDirectoryName(%%1);
    Directory.CreateDirectory(path + Path.GetFileName(%%1));
    DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("") == %%1.Length - 1) ? %%1 : %%1 + "");
    FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
    Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
    while (Folders.Count>0)
    {
                        FileSystemInfo tmp = Folders.Dequeue();
                        FileInfo f = tmp as FileInfo;
                        if (f == null)
                        {
                            DirectoryInfo d = tmp as DirectoryInfo;
                            Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("") == parent.Length - 1) ? parent : parent + "", path));
                            foreach (FileSystemInfo fi in d.GetFileSystemInfos())
                            {
                                Folders.Enqueue(fi);
                            }
                        }
                        else
                        {
                            f.CopyTo(f.FullName.Replace(parent, path));
                        }
    }

    14.复制目录下所有的文件夹到另一个文件夹下

    DirectoryInfo d = new DirectoryInfo(%%1);
    foreach (DirectoryInfo dirs in d.GetDirectories())
    {
        Queue<FileSystemInfo> al = new Queue<FileSystemInfo>(dirs.GetFileSystemInfos());
        while (al.Count > 0)
        {
            FileSystemInfo temp = al.Dequeue();
            FileInfo file = temp as FileInfo;
            if (file == null)
            {
                DirectoryInfo directory = temp as DirectoryInfo;
                Directory.CreateDirectory(path + directory.Name);
                foreach (FileSystemInfo fsi in directory.GetFileSystemInfos())
                    al.Enqueue(fsi);
            }
            else
                File.Copy(file.FullName, path + file.Name);
        }
    }

    15.移动文件夹

                    string filename = Path.GetFileName(%%1);
                    string path=(%%2.LastIndexOf("") == %%2.Length - 1) ? %%2 : %%2 + "";
                    if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
                        Directory.Move(%%1, path + filename);
                    else
                    {
                        string parent = Path.GetDirectoryName(%%1);
                        Directory.CreateDirectory(path + Path.GetFileName(%%1));
                        DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("") == %%1.Length - 1) ? %%1 : %%1 + "");
                        FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
                        Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
                        while (Folders.Count > 0)
                        {
                            FileSystemInfo tmp = Folders.Dequeue();
                            FileInfo f = tmp as FileInfo;
                            if (f == null)
                            {
                                DirectoryInfo d = tmp as DirectoryInfo;
                                DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("") == parent.Length - 1) ? parent : parent + "", path));
                                dpath.Create();
                                foreach (FileSystemInfo fi in d.GetFileSystemInfos())
                                {
                                    Folders.Enqueue(fi);
                                }
                            }
                            else
                            {
                                f.MoveTo(f.FullName.Replace(parent, path));
                            }
                        }
                        Directory.Delete(%%1, true);
                    }

    16.移动目录下所有的文件夹到另一个目录下

    string filename = Path.GetFileName(%%1);
                    if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
                        foreach (string dir in Directory.GetDirectories(%%1))
                            Directory.Move(dir, Path.Combine(%%2,filename));
                    else
                    {
                        foreach (string dir2 in Directory.GetDirectories(%%1))
                        {
                            string parent = Path.GetDirectoryName(dir2);
                            Directory.CreateDirectory(Path.Combine(%%2, Path.GetFileName(dir2)));
                            string dir = (dir2.LastIndexOf("") == dir2.Length - 1) ? dir2 : dir2 + "";
                            DirectoryInfo dirdir = new DirectoryInfo(dir);
                            FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos();
                            Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos());
                            while (Folders.Count > 0)
                            {
                                FileSystemInfo tmp = Folders.Dequeue();
                                FileInfo f = tmp as FileInfo;
                                if (f == null)
                                {
                                    DirectoryInfo d = tmp as DirectoryInfo;
                                    DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("") == parent.Length - 1) ? parent : parent + "", %%2));
                                    dpath.Create();
                                    foreach (FileSystemInfo fi in d.GetFileSystemInfos())
                                    {
                                        Folders.Enqueue(fi);
                                    }
                                }
                                else
                                {
                                    f.MoveTo(f.FullName.Replace(parent, %%2));
                                }
                            }
                            dirdir.Delete(true);
                        }
                    }

    17.以一个文件夹的框架在另一个目录创建文件夹和空文件

    bool b=false;
    string path = (%%2.LastIndexOf("") == %%2.Length - 1) ? %%2 : %%2 + "";
    string parent = Path.GetDirectoryName(%%1);
    Directory.CreateDirectory(path + Path.GetFileName(%%1));
    DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("") == %%1.Length - 1) ? %%1 : %%1 + "");
    FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
    Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
    while (Folders.Count > 0)
    {
        FileSystemInfo tmp = Folders.Dequeue();
        FileInfo f = tmp as FileInfo;
        if (f == null)
        {
            DirectoryInfo d = tmp as DirectoryInfo;
            Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("") == parent.Length - 1) ? parent : parent + "", path));
            foreach (FileSystemInfo fi in d.GetFileSystemInfos())
            {
                Folders.Enqueue(fi);
            }
        }
        else
        {
            if(b) File.Create(f.FullName.Replace(parent, path));
        }
    }

    18.复制文件
    //using System.IO;
    File.Copy(%%1,%%2);

    19.复制一个文件夹下所有的文件到另一个目录
    //using System.IO;
    foreach (string fileStr in Directory.GetFiles(%%1))
     File.Copy((%%1.LastIndexOf("") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + ""+Path.GetFileName(fileStr),(%%2.LastIndexOf("\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + ""+Path.GetFileName(fileStr));

    20.提取扩展名
    //using System.IO;
    string %%2=Path.GetExtension(%%1);

    21.提取文件名
    //using System.IO;
    string %%2=Path.GetFileName(%%1);

    22.提取文件路径
    //using System.IO;
    string %%2=Path.GetDirectoryName(%%1);

    23.替换扩展名
    //using System.IO;
    File.ChangeExtension(%%1,%%2);

    24.追加路径
    //using System.IO;
    string %%3=Path.Combine(%%1,%%2);

    25.移动文件
    //using System.IO;
    File.Move(%%1,%%2+""+file.getname(%%1));

    26.移动一个文件夹下所有文件到另一个目录
    foreach (string fileStr in Directory.GetFiles(%%1))
     File.Move((%%1.LastIndexOf("") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + ""+Path.GetFileName(fileStr),(%%2.LastIndexOf("\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + ""+Path.GetFileName(fileStr));

    27.指定目录下搜索文件

    string fileName=%%1;
    string dirName=%%2;
     DirectoryInfo   dirc=new   DirectoryInfo(dirName);
     foreach(FileInfo   file   in   dirc.GetFiles()) {
      if(file.Name.IndexOf(fileName)>-1)
       return file.FullName;
      }
      foreach(DirectoryInfo   dir   in   dirc.GetDirectories())   { 
       return   GetFile(fileName,dir.FullName); 
      }
      return   "找不到指定的文件"; 
     }

    28.打开对话框
    OpenFileDialog penFileDialog=new OpenFileDialog();
    openFileDialog.InitialDirectory="c:\\";//注意这里写路径时要用c:\\而不是c:\
    openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";
    openFileDialog.RestoreDirectory=true;
    openFileDialog.FilterIndex=1;
    if (openFileDialog.ShowDialog()==DialogResult.OK) {
     fName=openFileDialog.FileName;
     File fileOpen=new File(fName);
     isFileHaveName=true;
     %%1=fileOpen.ReadFile();
     %%1.AppendText("");
    }

    29.文件分割
    //using System.IO;
    FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
    byte[] btArr = new byte[fsr.Length];
    fsr.Read(btArr, 0, btArr.Length);
    fsr.Close();
    string strFileName=%%1.Substring(%%1.LastIndexOf("")+1);
    FileStream fsw = new FileStream(%%2 + strFileName + "1", FileMode.Create, FileAccess.Write);
    fsw.Write(btArr, 0, btArr.Length/2);
    fsw.Close();
    fsw = new FileStream(%%2 + strFileName + "2", FileMode.Create, FileAccess.Write);
    fsw.Write(btArr, btArr.Length/2, btArr.Length-btArr.Length/2);
    fsw.Close();

    30.文件合并
    //using System.IO;
    string strFileName = %%1.Substring(%%1.LastIndexOf("") + 1);
    FileStream fsr1 = new FileStream(%%2 + strFileName + "1", FileMode.Open, FileAccess.Read);
    FileStream fsr2 = new FileStream(%%2 + strFileName + "2", FileMode.Open, FileAccess.Read);
    byte[] btArr = new byte[fsr1.Length+fsr2.Length];
    fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));
    fsr2.Read(btArr, Convert.ToInt32(fsr1.Length), Convert.ToInt32(fsr2.Length));
    fsr1.Close();fsr2.Close();
    FileStream fsw = new FileStream(%%2 + strFileName, FileMode.Create, FileAccess.Write);
    fsw.Write(btArr, 0, btArr.Length);
    fsw.Close();

    31.文件简单加密
    //using System.IO;
    //读文件
    FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
    byte[] btArr = new byte[fsr.Length];
    fsr.Read(btArr, 0, btArr.Length);
    fsr.Close();
    for (int i = 0; i < btArr.Length; i++){ //加密
     int ibt = btArr[i];
     ibt += 100;
     ibt %= 256;
     btArr[i] = Convert.ToByte(ibt);
    }
    //写文件
    string strFileName = Path.GetExtension(%%1);
    FileStream fsw = new FileStream(%%2+"/" + "enc_" + strFileName, FileMode.Create, FileAccess.Write);
     fsw.Write(btArr, 0, btArr.Length);
     fsw.Close();

    32.文件简单解密
    //using System.IO;
    FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
    byte[] btArr = new byte[fsr.Length];
    fsr.Read(btArr, 0, btArr.Length);
    fsr.Close();
    for (int i = 0; i < btArr.Length; i++){ //解密
     int ibt = btArr[i];
     ibt -= 100;
     ibt += 256;
     ibt %= 256;
     btArr[i] = Convert.ToByte(ibt);
    }
    //写文件
    string strFileName = Path.GetExtension(%%1);
    FileStream fsw = new FileStream(%%2 +"/" + strFileName, FileMode.Create, FileAccess.Write);
    fsw.Write(btArr, 0, btArr.Length);
    fsw.Close();

    33.读取ini文件属性
    //using System.Runtime.InteropServices;
    //[DllImport("kernel32")]//返回取得字符串缓冲区的长度
    //private static extern long GetPrivateProfileString(string section,string key, string def,StringBuilder retVal,int size,string filePath);
    string Section=%%1;
    string Key=%%2;
    string NoText=%%3;
    string iniFilePath="Setup.ini";
    string %%4=String.Empty;
     if(File.Exists(iniFilePath)){
      StringBuilder temp = new StringBuilder(1024);
      GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath);
      %%4=temp.ToString();
     }

    34.合并一个目录下所有的文件
    //using System.IO;
    FileStream fsw = new FileStream(%%2, FileMode.Create, FileAccess.Write);
    foreach (string fileStr in Directory.GetFiles(%%1))
    {
    FileStream fsr1 = new FileStream(fileStr, FileMode.Open, FileAccess.Read);
    byte[] btArr = new byte[fsr1.Length];
    fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));
    fsr1.Close();
    fsw.Write(btArr, 0, btArr.Length);
    }
    fsw.Close();

    35.写入ini文件属性
    //using System.Runtime.InteropServices;
    //[DllImport("kernel32")]//返回0表示失败,非0为成功
    //private static extern long WritePrivateProfileString(string section,string key, string val,string filePath);
    string Section=%%1;
    string Key=%%2;
    string Value=%%3;
    string iniFilePath="Setup.ini";
    bool %%4=false;
        if(File.Exists(iniFilePath))
        {
    long pStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);  
    if(OpStation == 0)
    {
        %%4=false;
    }
    else
    {
        %%4=true;
    }
        }

    36.获得当前路径
    string %%1=Environment.CurrentDirectory;

    37.读取XML数据库
    //using System.Xml;
    XmlDocument doc=new XmlDocument();
    doc.Load(%%1);
    string %%9;
    XmlElement xe=doc.GetElementById(%%7);
    XmlNodeList elemList=xe.ChildNodes;
    foreach(XmlNode elem in elemList)
    {
    if(elem.NodeType==%%8)
    {
    %%9=elem.Value;
    break;
    }
    }

    38.写入XML数据库
    //using System.Xml;
    XmlDocument doc=new XmlDocument();
    doc.Load(%%1);
    XmlNode root=doc.DocumentElement;
    XmlElement book=doc.createElement_x(%%3);
    XmlElement book=doc.createElement_x(%%5);
    XmlElement port=doc.createElement_x(%%6);
    book.SetAttribute(%%4,root.ChildNodes.Count.ToString());
    author.InnerText=%%8;
    book.appendChild(author);
    book.appendChild(port);
    root.appendChild(book);
    doc.Save(%%1);

    39.ZIP压缩文件

    FileStream infile;
    try
    {
     // Open the file as a FileStream object.
     infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
     byte[] buffer = new byte[infile.Length];
     // Read the file to ensure it is readable.
     int count = infile.Read(buffer, 0, buffer.Length);
     if (count != buffer.Length)
     {
      infile.Close();
    //Test Failed: Unable to read data from file
      return;
     }
     infile.Close();
     MemoryStream ms = new MemoryStream();
     // Use the newly created memory stream for the compressed data.
     DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true);
     //Compression
     compressedzipStream.Write(buffer, 0, buffer.Length);
     // Close the stream.
     compressedzipStream.Close();
     //Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length);
     FileInfo f = new FileInfo(%%2);
     StreamWriter w = f.CreateText();
     w.Write(buffer,0,ms.Length);
     w.Close();
    } // end try
    catch (InvalidDataException)
    {
     //Error: The file being read contains invalid data.
    } catch (FileNotFoundException)
    {
     //Error:The file specified was not found.
    } catch (ArgumentException)
    {
     //Error: path is a zero-length string, contains only white space, or contains one or more invalid characters
    } catch (PathTooLongException)
    {
     //Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based

     platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
    } catch (DirectoryNotFoundException)
    {
     //Error: The specified path is invalid, such as being on an unmapped drive.
    } catch (IOException)
    {
     //Error: An I/O error occurred while opening the file.
    } catch (UnauthorizedAccessException)
    {
     //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required

     permissions.
    } catch (IndexOutOfRangeException)
    {
     //Error: You must provide parameters for MyGZIP.
    }

    40.ZIP解压缩

    FileStream infile;
    try
    {
        // Open the file as a FileStream object.
        infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
        byte[] buffer = new byte[infile.Length];
        // Read the file to ensure it is readable.
        int count = infile.Read(buffer, 0, buffer.Length);
        if (count != buffer.Length)
        {
    infile.Close();
    //Test Failed: Unable to read data from file
    return;
        }
        infile.Close();
        MemoryStream ms = new MemoryStream();
        // ms.Position = 0;
        DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);
        //Decompression
        byte[] decompressedBuffer = new byte[buffer.Length *2];
        zipStream.Close();
    FileInfo f = new FileInfo(%%2);
    StreamWriter w = f.CreateText();
    w.Write(decompressedBuffer);
    w.Close();
    } // end try
    catch (InvalidDataException)
    {
        //Error: The file being read contains invalid data.
    }
    catch (FileNotFoundException)
    {
        //Error:The file specified was not found.
    }
    catch (ArgumentException)
    {
        //Error: path is a zero-length string, contains only white space, or contains one or more invalid characters
    }
    catch (PathTooLongException)
    {
        //Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based

    platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
    }
    catch (DirectoryNotFoundException)
    {
        //Error: The specified path is invalid, such as being on an unmapped drive.
    }
    catch (IOException)
    {
        //Error: An I/O error occurred while opening the file.
    }
    catch (UnauthorizedAccessException)
    {
        //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required

    permissions.
    }
    catch (IndexOutOfRangeException)
    {
        //Error: You must provide parameters for MyGZIP.
    }

    41.获得应用程序完整路径
    string %%1=Application.ExecutablePath;

    42.ZIP压缩文件夹

            private void CreateCompressFile(Stream source, string destinationName)
            {
                using (Stream destination = new FileStream(destinationName, FileMode.Create, FileAccess.Write))
                {
                    using (GZipStream utput = new GZipStream(destination, CompressionMode.Compress))
                    {
                        byte[] bytes = new byte[4096];
                        int n;
                        while ((n = source.Read(bytes, 0, bytes.Length)) != 0)
                        {
                            output.Write(bytes, 0, n);
                        }
                    }
                }
            }
    ArrayList list = new ArrayList();
    foreach (string f in Directory.GetFiles(%%1))
    {
        byte[] destBuffer = File.ReadAllBytes(f);
        SerializeFileInfo sfi = new SerializeFileInfo(f, destBuffer);
        list.Add(sfi);
    }
    IFormatter formatter = new BinaryFormatter();
    using (Stream s = new MemoryStream())
    {
        formatter.Serialize(s, list);
        s.Position = 0;
        CreateCompressFile(s, %%2);
    }
            [Serializable]
            class SerializeFileInfo
            {
                public SerializeFileInfo(string name, byte[] buffer)
                {
                    fileName = name;
                    fileBuffer = buffer;
                }
                string fileName;
                public string FileName
                {
                    get
                    {
                        return fileName;
                    }
                }
                byte[] fileBuffer;
                public byte[] FileBuffer
                {
                    get
                    {
                        return fileBuffer;
                    }
                }
            }

    43.递归删除目录下的文件
    //using System.IO;
    DirectoryInfo DInfo=new DirectoryInfo(%%1);
    FileSystemInfo[] FSInfo=DInfo.GetFileSystemInfos();
    for(int i=0;i<FSInfo.Length;i++)
    {
    FileInfo FInfo=new FileInfo(%%1+FSInfo[i].ToString());
    FInfo.Delete();
    }

    44.验证DTD

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ProhibitDtd = false;
    settings.ValidationType = ValidationType.DTD;
    settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("my book.xml", settings);
    // Parse the file.
    while (reader.Read());
    // Display any validation errors.
    private static void ValidationCallBack(object sender, ValidationEventArgs e)
    {
    Console.WriteLine("Validation Error: {0}", e.Message);
    }

    45.Schema 验证

    Boolean m_success;
    XmlValidatingReader reader = null;
       XmlSchemaCollection myschema = new XmlSchemaCollection();
    ValidationEventHandler eventHandler = new ValidationEventHandler(ShowCompileErrors);
    try
    {
    //Create the XML fragment to be parsed.
    String xmlFrag = "<author xmlns='urn:bookstore- schema'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +
    "<first-name>Herman</first-name>" +
    "<last-name>Melville</last-name>" +
    "</author>";
    //Create the XmlParserContext.
    XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
    //Implement the reader.
    reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);
    //Add the schema.
    myschema.Add("urn:bookstore-schema", "c:\Books.xsd");
    //Set the schema type and add the schema to the reader.
    reader.ValidationType = ValidationType.Schema;
    reader.Schemas.Add(myschema);
    while (reader.Read())
    {
    }
    Console.WriteLine("Completed validating xmlfragment");
    }
    catch (XmlException XmlExp)
    {
    Console.WriteLine(XmlExp.Message);
    }
    catch(XmlSchemaException XmlSchExp)
    {
    Console.WriteLine(XmlSchExp.Message);
    }
    catch(Exception GenExp)
    {
    Console.WriteLine(GenExp.Message);
    }
    finally
    {
    Console.Read();
    }
    public static void ShowCompileErrors(object sender, ValidationEventArgs args)
    {
    Console.WriteLine("Validation Error: {0}", args.Message);
    }

    46.Grep

    //Traditionally grep stands for "Global Regular Expression Print".
    //Global means that an entire file is searched.
    //Regular Expression means that a regular expression string is used to establish a search pattern.
    //Print means that the command will display its findings.
    //Simply put, grep searches an entire file for the pattern you want and displays its findings.
    //
    //The use syntax is different from the traditional Unix syntax, I prefer a syntax similar to
    //csc, the C# compiler.
    //
    // grep [/h|/H] - Usage Help
    //
    // grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files
    //
    // /c - print a count of matching lines for each input file;
    // /i - ignore case in pattern;
    // /l - print just files (scanning will stop on first match);
    // /n - prefix each line of output with line number;
    // /r - recursive search in subdirectories;
    //
    // /E:reg_exp - the Regular Expression used as search pattern. The Regular Expression can be delimited by
    // quotes like "..." and '...' if you want to include in it leading or trailing blanks;
    //
    // /F:files - the list of input files. The files can be separated by commas as in /F:file1,file2,file3
    //and wildcards can be used for their specification as in /F:*file?.txt;
    //
    //Example:
    //
    // grep /c /n /r /E:" C Sharp " /F:*.cs
    //Option Flags
    private bool m_bRecursive;
    private bool m_bIgnoreCase;
    private bool m_bJustFiles;
    private bool m_bLineNumbers;
    private bool m_bCountLines;
    private string m_strRegEx;
    private string m_strFiles;
    //ArrayList keeping the Files
    private ArrayList m_arrFiles = new ArrayList();
    //Properties
    public bool Recursive
    {
    get { return m_bRecursive; }
    set { m_bRecursive = value; }
    }

    public bool IgnoreCase
    {
    get { return m_bIgnoreCase; }
    set { m_bIgnoreCase = value; }
    }

    public bool JustFiles
    {
    get { return m_bJustFiles; }
    set { m_bJustFiles = value; }
    }

    public bool LineNumbers
    {
    get { return m_bLineNumbers; }
    set { m_bLineNumbers = value; }
    }

    public bool CountLines
    {
    get { return m_bCountLines; }
    set { m_bCountLines = value; }
    }

    public string RegEx
    {
    get { return m_strRegEx; }
    set { m_strRegEx = value; }
    }

    public string Files
    {
    get { return m_strFiles; }
    set { m_strFiles = value; }
    }

    //Build the list of Files
    private void GetFiles(String strDir, String strExt, bool bRecursive)
    {
    //search pattern can include the wild characters '*' and '?'
    string[] fileList = Directory.GetFiles(strDir, strExt);
    for(int i=0; i<fileList.Length; i++)
    {
    if(File.Exists(fileList[i]))
    m_arrFiles.Add(fileList[i]);
    }
    if(bRecursive==true)
    {
    //Get recursively from subdirectories
    string[] dirList = Directory.GetDirectories(strDir);
    for(int i=0; i<dirList.Length; i++)
    {
    GetFiles(dirList[i], strExt, true);
    }
    }
    }

    //Search Function
    public void Search()
    {
    String strDir = Environment.CurrentDirectory;
    //First empty the list
    m_arrFiles.Clear();
    //Create recursively a list with all the files complying with the criteria
    String[] astrFiles = m_strFiles.Split(new Char[] {','});
    for(int i=0; i<astrFiles.Length; i++)
    {
    //Eliminate white spaces
    astrFiles[i] = astrFiles[i].Trim();
    GetFiles(strDir, astrFiles[i], m_bRecursive);
    }
    //Now all the Files are in the ArrayList, open each one
    //iteratively and look for the search string
    String strResults = "Grep Results: ";
    String strLine;
    int iLine, iCount;
    bool bEmpty = true;
    IEnumerator enm = m_arrFiles.GetEnumerator();
    while(enm.MoveNext())
    {
    try
    {
    StreamReader sr = File.OpenText((string)enm.Current);
    iLine = 0;
    iCount = 0;
    bool bFirst = true;
    while((strLine = sr.ReadLine()) != null)
    {
    iLine++;
    //Using Regular Expressions as a real Grep
    Match mtch;
    if(m_bIgnoreCase == true)
    mtch = Regex.Match(strLine, m_strRegEx, RegexOptions.IgnoreCase);
    else
    mtch = Regex.Match(strLine, m_strRegEx);
    if(mtch.Success == true)
    {
    bEmpty = false;
    iCount++;
    if(bFirst == true)
    {
    if(m_bJustFiles == true)
    {
    strResults += (string)enm.Current + " ";
    break;
    }
    else
    strResults += (string)enm.Current + ": ";
    bFirst = false;
    }
    //Add the Line to Results string
    if(m_bLineNumbers == true)
    strResults += " " + iLine + ": " + strLine + " ";
    else
    strResults += " " + strLine + " ";
    }
    }
    sr.Close();
    if(bFirst == false)
    {
    if(m_bCountLines == true)
    strResults += " " + iCount + " Lines Matched ";
    strResults += " ";
    }
    }
    catch(SecurityException)
    {
    strResults += " " + (string)enm.Current + ": Security Exception ";
    }
    catch(FileNotFoundException)
    {
    strResults += " " + (string)enm.Current + ": File Not Found Exception ";
    }
    }
    if(bEmpty == true)
    Console.WriteLine("No matches found!");
    else
    Console.WriteLine(strResults);
    }

    //Print Help
    private static void PrintHelp()
    {
    Console.WriteLine("Usage: grep [/h|/H]");
    Console.WriteLine("       grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files");
    }

    Arguments CommandLine = new Arguments(args);
    if(CommandLine["h"] != null || CommandLine["H"] != null)
    {
    PrintHelp();
    return;
    }
    // The working object
    ConsoleGrep grep = new ConsoleGrep();
    // The arguments /e and /f are mandatory
    if(CommandLine["E"] != null)
    grep.RegEx = (string)CommandLine["E"];
    else
    {
    Console.WriteLine("Error: No Regular Expression specified!");
    Console.WriteLine();
    PrintHelp();
    return;
    }
    if(CommandLine["F"] != null)
    grep.Files = (string)CommandLine["F"];
    else
    {
    Console.WriteLine("Error: No Search Files specified!");
    Console.WriteLine();
    PrintHelp();
    return;
    }
    grep.Recursive = (CommandLine["r"] != null);
    grep.IgnoreCase = (CommandLine["i"] != null);
    grep.JustFiles = (CommandLine["l"] != null);
    if(grep.JustFiles == true)
    grep.LineNumbers = false;
    else
    grep.LineNumbers = (CommandLine["n"] != null);
    if(grep.JustFiles == true)
    grep.CountLines = false;
    else
    grep.CountLines = (CommandLine["c"] != null);
    // Do the search
    grep.Search();

    47.直接创建多级目录
    //using System.IO;
    DirectoryInfo di=new DirectoryInfo(%%1);
    di.CreateSubdirectory(%%2);

    48.批量重命名
    //using System.IO;
    string strOldFileName; string strNewFileName; string strOldPart =this.textBox1.Text.Trim();//重命名文件前的文件名等待替换字符串
    string strNewPart = this.textBox2.Text.Trim();//重命名文件后的文件名替换字符串
    string strNewFilePath;
    string strFileFolder;    //原始图片目录
    int TotalFiles = 0; DateTime StartTime = DateTime.Now; //获取开始时间 
    FolderBrowserDialog f1 = new FolderBrowserDialog(); //打开选择目录对话框
    if (f1.ShowDialog() == DialogResult.OK) {
     strFileFolder = f1.SelectedPath;
     DirectoryInfo di = new DirectoryInfo(strFileFolder);
     FileInfo[] filelist = di.GetFiles("*.*");
     int i = 0;
     foreach (FileInfo fi in filelist) {
      strOldFileName = fi.Name;
      strNewFileName = fi.Name.Replace(strOldPart, strNewPart);
      strNewFilePath = @strFileFolder + "" + strNewFileName;
      filelist[i].MoveTo(@strNewFilePath); TotalFiles += 1;
      this.listBox1.Items.Add("文件名:" + strOldFileName + "已重命名为" + strNewFileName);
      i += 1;
     }
    }
    DateTime EndTime = DateTime.Now;//获取结束时间
    TimeSpan ts = EndTime - StartTime; this.listBox1.Items.Add("总耗时:" + ts.Hours.ToString() + "时" +ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒");

    49.文本查找替换

                if (args.Length == 3)
                {
    ReplaceFiles(args[0],args[1],args[2],null);
                }

                if (args.Length == 4)
                {
    if (args[3].Contains("v"))
    {
        ReplaceVariable(args[0], args[1], args[2], args[3]);
    }
    else
    {
        ReplaceFiles(args[0], args[1], args[2], args[3]);
    }
                }

            /// <summary>
            /// 替换环境变量中某个变量的文本值。可以是系统变量,用户变量,临时变量。替换时会覆盖原始值。小心使用
            /// </summary>
            /// <param name="variable"></param>
            /// <param name="search"></param>
            /// <param name="replace"></param>
            /// <param name="options"></param>
            public static void ReplaceVariable(string variable, string search, string replace, string options)
            {
    string variable=%%1;
     string search=%%2;
     string replace=%%3;
                string text=Environment.GetEnvironmentVariable(variable);
                System.Windows.Forms.MessageBox.Show(text);
                text=ReplaceText(text, search, replace, options);
                Environment.SetEnvironmentVariable(variable, text);
                text = Environment.GetEnvironmentVariable(variable);
                System.Windows.Forms.MessageBox.Show(text);
            }

            /// <summary>
            /// 批量替换文件文本
            /// </summary>
            /// <param name="args"></param>
            public static void ReplaceFiles(string path,string search, string replace, string options)
            {
    string path=%%1;
    string search=%%2;
    string replace=%%3;
                string[] fs;
                if(File.Exists(path)){
    ReplaceFile(path, search, replace, options);
    return;
                }
                if (Directory.Exists(path))
                {
    fs = Directory.GetFiles(path);
    foreach (string f in fs)
    {

        ReplaceFile(f, search, replace, options);
    }
    return;
                }
                int i=path.LastIndexOf("");
                if(i<0)i=path.LastIndexOf("/");
                string d, searchfile;
                if (i > -1)
                {
    d = path.Substring(0, i + 1);
    searchfile = path.Substring(d.Length);
                }
                else
                {
    d = System.Environment.CurrentDirectory;
    searchfile = path;
                }

                searchfile = searchfile.Replace(".", @".");
                searchfile = searchfile.Replace("?", @"[^.]?");
                searchfile = searchfile.Replace("*", @"[^.]*");
                //System.Windows.Forms.MessageBox.Show(d);  System.Windows.Forms.MessageBox.Show(searchfile);
                if (!Directory.Exists(d)) return;
                fs = Directory.GetFiles(d);
                foreach (string f in fs)
                {
    if(System.Text.RegularExpressions.Regex.IsMatch(f,searchfile))
        ReplaceFile(f, search, replace, options);
                }
            }
          
            /// <summary>
            /// 替换单个文本文件中的文本
            /// </summary>
            /// <param name="filename"></param>
            /// <param name="search"></param>
            /// <param name="replace"></param>
            /// <param name="options"></param>
            /// <returns></returns>
            public static bool ReplaceFile(string filename, string search, string replace,string options)
            {
    string path=%%1;
    string search=%%2;
    string replace=%%3;
                FileStream fs = File.OpenRead(filename);
                //判断文件是文本文件还二进制文件。该方法似乎不科学
                byte b;
                for (long i = 0; i < fs.Length; i++)
                {
    b = (byte)fs.ReadByte();
    if (b == 0)
    {
        System.Windows.Forms.MessageBox.Show("非文本文件");
        return false;//有此字节则表示改文件不是文本文件。就不用替换了
    }
                }
                //判断文本文件编码规则。
                byte[] bytes = new byte[2];
                Encoding coding=Encoding.Default;
                if (fs.Read(bytes, 0, 2) > 2)
                {
    if (bytes == new byte[2] { 0xFF, 0xFE }) coding = Encoding.Unicode;
    if (bytes == new byte[2] { 0xFE, 0xFF }) coding = Encoding.BigEndianUnicode;
    if (bytes == new byte[2] { 0xEF, 0xBB }) coding = Encoding.UTF8;
                }
                fs.Close();
                //替换数据
                string text=File.ReadAllText(filename, coding);
                text=ReplaceText(text,search, replace, options);
                File.WriteAllText(filename, text, coding);
                return true;
            }
            /// <summary>
            /// 替换文本
            /// </summary>
            /// <param name="text"></param>
            /// <param name="search"></param>
            /// <param name="replace"></param>
            /// <param name="options"></param>
            /// <returns></returns>
            public static string ReplaceText(string text, string search, string replace, string options)
            {
                RegexOptions ps = RegexOptions.None;
                if (options == null)  //纯文本替换
                {
    search = search.Replace(".", @".");
    search = search.Replace("?", @"?");
    search = search.Replace("*", @"*");
    search = search.Replace("(", @"(");
    search = search.Replace(")", @")");
    search = search.Replace("[", @"[");
    search = search.Replace("[", @"[");
    search = search.Replace("[", @"[");
    search = search.Replace("{", @"{");
    search = search.Replace("}", @"}");
    ops |= RegexOptions.IgnoreCase;
                }
                else
                {
    if(options.Contains("I"))ops |= RegexOptions.IgnoreCase;
                }
                text = Regex.Replace(text, search, replace, ops);
                return text;
            }

    50.文件关联
    //using Microsoft.Win32;
    string keyName;
    string keyValue;
    keyName = %%1; //"WPCFile"
    keyValue = %%2; //"资源包文件"
    RegistryKey isExCommand = null;
    bool isCreateRegistry = true;
    try
    {
        /// 检查 文件关联是否创建
        isExCommand = Registry.ClassesRoot.OpenSubKey(keyName);
        if (isExCommand == null)
        {
            isCreateRegistry = true;
        }
        else
        {
            if (isExCommand.GetValue("Create").ToString() == Application.ExecutablePath.ToString())
            {
                isCreateRegistry = false;
            }
            else
            {
                Registry.ClassesRoot.DeleteSubKeyTree(keyName);
                isCreateRegistry = true;           
            }

        }
    }
    catch (Exception)
    {
        isCreateRegistry = true;
    }

    if (isCreateRegistry)
    {
        try
        {
            RegistryKey key, keyico;
            key = Registry.ClassesRoot.CreateSubKey(keyName);
            key.SetValue("Create", Application.ExecutablePath.ToString());
            keyico = key.CreateSubKey("DefaultIcon");
            keyico.SetValue("", Application.ExecutablePath + ",0");
            key.SetValue("", keyValue);
            key = key.CreateSubKey("Shell");
            key = key.CreateSubKey("Open");
            key = key.CreateSubKey("Command");
            key.SetValue("", """ + Application.ExecutablePath.ToString() + "" "%1"");
            keyName = %%3; //".wpc"
            keyValue = %%1;
            key = Registry.ClassesRoot.CreateSubKey(keyName);
            key.SetValue("", keyValue);
        }
        catch (Exception)
        {
        }
    }

    51.操作Excel文件
    //using Excel;
    private static string Connstring ;//连接字符串
    Workbook myBook = null;
    Worksheet mySheet=null;
    Excel.ApplicationClass ExlApp = new ApplicationClass();
    ExlApp.Visible =true;
    object Missiong = System.Reflection.Missing.Value;
    string reqpath = this.Request.PhysicalPath;
    int pos = reqpath.LastIndexOf("");
    reqpath = reqpath.Substring(0,pos);
    ExlApp.Workbooks.Open(%%1,oMissiong, oMissiong, oMissiong,oMissiong, oMissiong, oMissiong,
      oMissiong,oMissiong,oMissiong, oMissiong, oMissiong, oMissiong);//, oMissiong);//, oMissiong); // reqpath + "\scxx.xls"
    myBook = ExlApp.Workbooks[1];
    mySheet = (Worksheet)myBook.Worksheets[1];
    Excel.Range rg;
    string mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB"
    using(SqlConnection myConnection = new SqlConnection(Connstring)){
    SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
    myConnection.Open();
    SqlDataReader myReader;
    myReader = myCommand.ExecuteReader();
    // Always call Read before accessing data.
    int recount=0;
    while (myReader.Read())
    {
     recount=recount+1;
    }
    myReader.Close();
    myConnection.Close();
    int gho=3;
    for(int i = 1; i < recount ; i ++)
    {
    rg = mySheet.get_Range("A" +  gho.ToString(), "C" + ( gho ).ToString());
     rg.Copy(oMissiong);
      rg.Insert(XlInsertShiftDirection.xlShiftDown);
     }
     //从数据表中取数据
     mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB ORDER BY qy,zb";
     myConnection = new SqlConnection(Connstring);
     myCommand = new SqlCommand(mySelectQuery,myConnection);
     myConnection.Open();
     myReader = myCommand.ExecuteReader();
     int Curhs =  gho ;
     while (myReader.Read())
     {
      mySheet.Cells[Curhs,1] =myReader["qy"].ToString() ;
      mySheet.Cells[Curhs,2] =myReader["zb"].ToString() ;
      mySheet.Cells[Curhs,3] =myReader["dh"].ToString() ;
      Curhs ++;
     }
     myReader.Close();
     //合并最后一页
     MergeCell(ref mySheet,3 , recount ,"A"); //调用函数实现A列合并
     MergeCell(ref mySheet,3 , recount ,"B"); //调用函数实现A列合并
     myBook.SaveAs(%%1, oMissiong,oMissiong, oMissiong,oMissiong,oMissiong,Excel.XlSaveAsAccessMode.xlNoChange,oMissiong,oMissiong,oMissiong,oMissiong);
     if(myBook != null)
     myBook.Close(true, %%1, true);
     if(mySheet != null)
      System.Runtime.InteropServices.Marshal.ReleaseComObject (mySheet);
     mySheet = null;
     if(myBook != null)
     System.Runtime.InteropServices.Marshal.ReleaseComObject (myBook);
     myBook = null;
     if(ExlApp != null)
     {
      ExlApp.Quit();
      System.Runtime.InteropServices.Marshal.ReleaseComObject ((object)ExlApp);
      ExlApp = null; 
     }
     GC.Collect();
     /// 合并单元格
     private void MergeCell(ref Worksheet mySheet, int startLine,int RecCount, string Col)
     {
      string qy1 = mySheet.get_Range(Col + startLine.ToString(), Col + startLine.ToString()).Text.ToString();
      Excel.Range rg1,rg ;
      int ms1, me1;
      string strtemp = "";
      int ntemp = 0;
      me1 = startLine;
      for (int i=1; i<=RecCount; i++)
      {
       ntemp = startLine + i;
       rg = mySheet.get_Range(Col+ ntemp.ToString(), Col+ ntemp.ToString());
       strtemp = rg.Text.ToString().Trim();
       if (qy1.Trim() != strtemp.Trim())
       {
        ms1 = me1;
        me1 = i + startLine - 1;
        //合并
        if (me1-ms1>0)
        {
         rg1 = mySheet.get_Range(Col + ms1.ToString(), Col + me1.ToString());
         rg1.ClearContents();
         rg1.MergeCells = true;
         if(Col == "A")
          mySheet.Cells[ms1,1] = qy1;
         else if (Col == "B")
          mySheet.Cells[ms1,2] = qy1;
        }
        me1 += 1;
        strtemp = mySheet.get_Range(Col + me1.ToString(), Col + me1.ToString()).Text.ToString();
        if(strtemp.Trim() != "")
         qy1 = strtemp;
       }
      }
     }

    52.设置JDK环境变量

    //using Microsoft.Win32;
    int isFileNum=0;
    int i=0;
    Environment.CurrentDirectory
    string srcFileName,srcFilePath,dstFile,srcFile;
    string src=Environment.CurrentDirectory+"
        {
         useless.Format("%s\%s",szDir,"resin.exe");
         srcFile=useless.GetBuffer(0);
         dstFile=srcFilePath+"\resin2.exe";
         CopyFile(srcFile,dstFile,false);
         useless.Format("%s\%s",szDir,"DLL1.dll");
         srcFile=useless.GetBuffer(0);
         dstFile=srcFilePath+"\DLL1.dll";
         CopyFile(srcFile,dstFile,false);
         useless.Format("%s\%s",szDir,"DeployDoc.exe");
         srcFile=useless.GetBuffer(0);
         dstFile=srcFilePath+"\DeployDoc.exe";
         CopyFile(srcFile,dstFile,false);
         string StrPath;
        
         CRegEdit SysJavaHome;string StrJavaHome;
         SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
         SysJavaHome.OpenKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment");
        
         CRegEdit RegHomePath;
         RegHomePath.m_RootKey=HKEY_CURRENT_USER;
         RegHomePath.OpenKey("Environment");
         RegHomePath.WriteString("RESIN_HOME",(LPCTSTR)srcFilePath); //D: esin-3.2.0
        
         useless.Format("%s\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));
         useful=useless;
         SysJavaHome.WriteString("Path",(LPCTSTR)useful);
         Sleep(5000);
        }
        else if(srcFileName.Find("ant")>0)
        {
         string StrPath;
        
         CRegEdit SysJavaHome;string StrJavaHome;
         SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
         SysJavaHome.OpenKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment");
        
        
         CRegEdit RegHomePath;
         RegHomePath.m_RootKey=HKEY_CURRENT_USER;
         RegHomePath.OpenKey("Environment");
         RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:apache-ant-1.7.1 PATH=%ANT_HOME%/bin
        
         useless.Format("%s\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));
         useful=useless;
         SysJavaHome.WriteString("Path",(LPCTSTR)useful);
         Sleep(5000);
        }
        else if(srcFileName.Find("eclipse")==0 || srcFileName.Find("NetBeans")==0)
        {
         //char * xmFile="";
         //SaveFileToStr("deploy.xml",xmFile);
        }
      }
      else
       continue;
     }
    */

    53.选择文件夹对话框

           public class FolderDialog : FolderNameEditor
            {
                FolderNameEditor.FolderBrowser fDialog = new
                System.Windows.Forms.Design.FolderNameEditor.FolderBrowser();
                public FolderDialog()
                {
                }
                public DialogResult DisplayDialog()
                {
    return DisplayDialog("请选择一个文件夹");
                }

                public DialogResult DisplayDialog(string description)
                {
    fDialog.Description = description;
    return fDialog.ShowDialog();
                }
                public string Path
                {
    get
    {
        return fDialog.DirectoryPath;
    }
                }
                ~FolderDialog()
                {
    fDialog.Dispose();
                }
            }
                FolderDialog aa = new FolderDialog();
                aa.DisplayDialog();
                if(aa.ShowDialog()==DialogResult.OK)
                {
                    %%1 = aa.SelectedPath;
                }

    54.删除空文件夹

    bool   IsValidFileChars(string   strIn) 
      { 
              Regex   regEx   =   new   Regex("[\*\\/:?<>|"]");
              return   !regEx.IsMatch("aj\pg"); 
      } 
                        try
                        {
                    string path = %%1;
    if(!IsValidFileChars(path))
    throw new Exception("非法目录名!");
    if(!Directory.Exists(path))
    throw new Exception("本地目录路径不存在!");
                    DirectoryInfo dir = new DirectoryInfo(path);
                    FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
                    Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path));
                    while (Folders.Count > 0)
                    {
                        path = Folders.Dequeue();
                        string[] dirs = Directory.GetDirectories(path);
                            Directory.Delete(path);
                        }
                            foreach (string direct in dirs)
                            {
                                Folders.Enqueue(direct);
                            }
                        catch (Exception ep)
                        {
    MessageBox.show(ep.ToString());
                        }
                    }

    55.发送数据到剪贴板
    //using System.Windows.Forms;
    Clipboard.SetText(%%1);

    56.从剪贴板中取数据
    //using System.Windows.Forms;
     IDataObject iData = Clipboard.GetDataObject();
     string %%1;
       // 将数据与指定的格式进行匹配,返回bool
       if (iData.GetDataPresent(DataFormats.Text))
       {
        // GetData检索数据并指定一个格式
        %%1 = (string)iData.GetData(DataFormats.Text);
       }
       else
       {
        MessageBox.Show("目前剪贴板中数据不可转换为文本","错误");
       }

    57.获取文件路径的父路径
    //using System.IO;
    string %%2=Directory.GetParent(%%1);

    58.创建快捷方式
    //首先添加以下引用:COM下Windows Script. Host Object Model,然后可以通过以下方法创建快捷方式。

    string app = %%1;"http://localhost/TrainManage/Default.aspx"
    string location1 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites) + "\培训教学教务管理系统.url";
    string location2 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory) + "\培训教学教务管理系统.url";
    string location3 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Programs) + "\培训教学教务管理系统.url";
    try {
      // Create a Windows Script. Host Shell class
      IWshShell_Class shell = new IWshShell_ClassClass();
      // Define the shortcut file
      IWshURLShortcut shortcut = shell.CreateShortcut(location1) as IWshURLShortcut;
      shortcut.TargetPath = app;
      // Save it
      shortcut.Save();
      shortcut = shell.CreateShortcut(location2) as IWshURLShortcut;shortcut.TargetPath = app;
                       // Save it
                       shortcut.Save();
                       shortcut = shell.CreateShortcut(location3) as IWshURLShortcut;
                       shortcut.TargetPath = app;
                       // Save it
                       shortcut.Save();
                  }
                  catch(COMException ex)
                  {
     Console.WriteLine(ex.Message);
    }

    59.弹出快捷菜单
    //在工具箱中找到ContextMenuStrip控件,并拖放至Form1窗体
    //设计菜单内容
    //将contextMenuStrip1与窗体关联。方法是先选定Form1,为其ContextMenuStrip属性设置属性值为contextMenuStrip1

    60.文件夹复制到整合操作

                FolderDialog aa = new FolderDialog();
                aa.DisplayDialog();
                if (aa.Path != "")
                {
                    string path = (aa.Path.LastIndexOf("") == aa.Path.Length - 1) ? aa.Path : aa.Path+"";
                    string parent = Path.GetDirectoryName(%%1);
                    Directory.CreateDirectory(path + Path.GetFileName(%%1));
                    %%1 = (%%1.LastIndexOf("") == %%1.Length - 1) ? %%1 : %%1 + "";
                    DirectoryInfo dir = new DirectoryInfo(%%1);
                    FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
                    Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
                    while (Folders.Count>0)
                    {
                        FileSystemInfo tmp = Folders.Dequeue();
                        FileInfo f = tmp as FileInfo;
                        if (f == null)
                        {
                            DirectoryInfo d = tmp as DirectoryInfo;
                            Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("") == parent.Length - 1) ? parent : parent + "", path));
                            foreach (FileSystemInfo fi in d.GetFileSystemInfos())
                            {
                                Folders.Enqueue(fi);
                            }
                        }
                        else
                        {
                            f.CopyTo(f.FullName.Replace(parent, path));
                        }
                    }
                }

    文章同时发布在个人博客
  • 相关阅读:
    Sigma Function 数学 因子求和
    luogu P3800 Power收集
    LibreOJ #110. 乘法逆元
    luogu P3802 小魔女帕琪
    LibreOJ #6000. 「网络流 24 题」搭配飞行员
    LibreOJ #103. 子串查找
    LibreOJ #102. 最小费用流
    LibreOJ #109. 并查集
    BZOJ 1922: [Sdoi2010]大陆争霸
    LibreOJ #119. 最短路
  • 原文地址:https://www.cnblogs.com/tilv37/p/3909226.html
Copyright © 2020-2023  润新知