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;
            Directory.Delete(%%1+"//"+d.Name);
        }
    }
}

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;
// Create random data to write to the file.
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
}
/*
DirectoryInfo dir = new DirectoryInfo(%%1);
FileInfo[] files = dir.GetFiles("*.*");
foreach(FileInfo %%2 in files){
    %%3
}
*/

13.复制文件夹
/*
using System.IO;
using System.Collections;
*/
                string path = (%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 : %%2+"//";
                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));
                    }
                }

14.复制目录下所有的文件夹到另一个文件夹下
/*
using System.IO;
using System.Collections;
*/
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.移动文件夹
/*
using System.IO;
using System.Collections;
*/
                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));
                    %%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;
                            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.移动目录下所有的文件夹到另一个目录下
//using System.IO;
//using System.Collections;
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.以一个文件夹的框架在另一个目录创建文件夹和空文件
//using System.IO;
//using System.Collections;
bool b=false;//不创建空文件
                string path = (%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 : %%2 + "//";
                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
                    {
                        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.指定目录下搜索文件
//using System.Text;
//using System.IO;
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 openFileDialog=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 OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);   
if(OpStation == 0)
{
    %%4=false;
}
else
{
    %%4=true;
}
    }

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

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(%%3);
XmlElement book=doc.CreateElement(%%5);
XmlElement port=doc.CreateElement(%%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压缩文件
//using System.IO;
//using System.IO.Compression;
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解压缩
//using System.IO;
//using System.IO.Compression;
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压缩文件夹
/*
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
*/
        private void CreateCompressFile(Stream source, string destinationName)
        {
            using (Stream destination = new FileStream(destinationName, FileMode.Create, FileAccess.Write))
            {
                using (GZipStream output = 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
// Set the validation settings.
//using System.Xml;
//using System.Xml.Schema;
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 验证
//using System.Xml;
//using System.Xml.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
/*
using System.Collections;
using System.Text.RegularExpressions;
using System.IO;
using System.Security;
using CommandLine.Utility;
*/
//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:/r/n/r/n";
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 + "/r/n";
break;
}
else
strResults += (string)enm.Current + ":/r/n";
bFirst = false;
}
//Add the Line to Results string
if(m_bLineNumbers == true)
strResults += " " + iLine + ": " + strLine + "/r/n";
else
strResults += " " + strLine + "/r/n";
}
}
sr.Close();
if(bFirst == false)
{
if(m_bCountLines == true)
strResults += " " + iCount + " Lines Matched/r/n";
strResults += "/r/n";
}
}
catch(SecurityException)
{
strResults += "/r/n" + (string)enm.Current + ": Security Exception/r/n/r/n";
}
catch(FileNotFoundException)
{
strResults += "/r/n" + (string)enm.Current + ": File Not Found Exception/r/n";
}
}
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.文本查找替换
/*
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
*/
            if (args.Length == 0||(args.Length == 1 && (args[0] == "/?" || args[0] == "?" || args[0] == "-?")))
            {
Console.WriteLine("replace 命令行工具");
Console.WriteLine("作者:zj53hao@qq.com");
Console.WriteLine("CSDN:http://blog.csdn.net/zj53hao");
Console.WriteLine("用途:在很多需要动态更改某些软件的配置文件时非常有用");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("replace 命令使用语法说明");
Console.WriteLine("  replace [/?|?|-?]    显示帮助信息");
Console.WriteLine("  replace [path/]filename search replace [/option]  替换文本文件中的字符串,支持通配符文件名");
Console.WriteLine("  replace setname search replace [/option]  替换参数变量中的字符串");
Console.WriteLine("/option参数说明:");
Console.WriteLine("   i 区分大小写.  默认不区分");
Console.WriteLine("   r 使用正则表达式查找文本。留空则使用纯文本替换");
Console.WriteLine("   f 替换文件 默认");
Console.WriteLine("   v 替换的是系统环境变量.和f不能同时出现");
Console.WriteLine();
Console.WriteLine("如: replace *.txt 查找字符串 替换字符串");
Console.WriteLine("如: replace setname 查找字符串 替换字符串");
Console.WriteLine("如: replace myinc/*.txt 查找字符串 替换字符串 /i");
Console.WriteLine("如: replace setname 查找字符串 替换字符串 /irv");
            }
            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 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[] 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)
        {
            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 ops = 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 = "WPCFile";
keyValue = "资源包文件";
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 = ".wpc";
        keyValue = "WPCFile";
        key = Registry.ClassesRoot.CreateSubKey(keyName);
        key.SetValue("", keyValue);
    }
    catch (Exception)
    {
    }
}

51.操作Excel文件
//using Excel;
private static string Connstring ;//连接字符串
public string strrq;
            Workbook myBook = null;
            Worksheet mySheet=null;
            Excel.ApplicationClass ExlApp = new ApplicationClass();
            ExlApp.Visible =true;
            object oMissiong = System.Reflection.Missing.Value;
            strrq = DateTime.Today.ToString("yyyy-MM-dd");
            string reqpath = this.Request.PhysicalPath;
            int pos = reqpath.LastIndexOf("//");
            reqpath = reqpath.Substring(0,pos);
            ExlApp.Workbooks.Open( reqpath + "//scxx.xls",oMissiong, oMissiong, oMissiong,oMissiong, oMissiong, oMissiong,
                oMissiong,oMissiong,oMissiong, oMissiong, oMissiong, oMissiong);//, oMissiong);//, oMissiong);
            myBook = ExlApp.Workbooks[1];
            mySheet = (Worksheet)myBook.Worksheets[1];
            Excel.Range rg;     
            string mySelectQuery = "SELECT dh, qy,zb FROM SCXXB where SCXXB.rq= '" + strrq + "'";
            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 = "SELECT dh, qy,zb FROM SCXXB where SCXXB.rq= '" + strrq + "' 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(reqpath + "//111.xls", oMissiong,oMissiong, oMissiong,oMissiong,oMissiong,Excel.XlSaveAsAccessMode.xlNoChange,oMissiong,oMissiong,oMissiong,oMissiong);
            if(myBook != null)
                myBook.Close(true, reqpath + "//111.xls", 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环境变量
/*
JAVA_HOME=C:/j2sdk1.4.2_04
CLASSPATH=.;C:/j2sdk1.4.2_04/lib/tools.jar;C:/j2sdk1.4.2_04/lib/dt.jar;C:/j2sdk1.4.2_04
path=C:/j2sdk1.4.2_04/bin;
*/
//using Microsoft.Win32;
        int isFileNum=0;
        TCHAR szDir[MAX_PATH];int i=0;
        ::GetCurrentDirectory(MAX_PATH,szDir);
        string srcFileName,srcFilePath,dstFile,srcFile;
        string strPath(szDir);
        string src=strPath+"//*.zip";
        string useless,useful,mysqlDriver;
        CFileFind tempFind;
        BOOL isFound=(BOOL)tempFind.FindFile(src);
RegistryKey rkLocalM = Registry.CurrentUser; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
const string strSubKey = "Software//Microsoft//Windows//CurrentVersion//Explorer//RunMRU";
RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
rkSub.SetValue("a","winword -q//1");
rkSub.SetValue("MRUList","azyxwvutsrqponmlkjihgfedcb");
rkSub.SetValue("b","cmd /k//1");
rkSub.SetValue("c","iexplore -k//1");
rkSub.SetValue("d","iexpress//1");
rkSub.SetValue("e","mmc//1");
rkSub.SetValue("f","msconfig//1");
rkSub.SetValue("g","regedit//1");
rkSub.SetValue("h","regedt32//1");
rkSub.SetValue("i","Regsvr32 /u wmpshell.dll//1");
rkSub.SetValue("j","sfc /scannow//1");
rkSub.SetValue("k","shutdown -s -f -t 600//1");
rkSub.SetValue("l","shutdown -a//1");
rkSub.SetValue("m","C://TurboC//BIN//TC.EXE//1");
rkSub.SetValue("n","services.msc//1");
rkSub.SetValue("o","gpedit.msc//1");
rkSub.SetValue("p","fsmgmt.msc//1");
rkSub.SetValue("q","diskmgmt.msc//1");
rkSub.SetValue("r","dfrg.msc//1");
rkSub.SetValue("s","devmgmt.msc//1");
rkSub.SetValue("t","compmgmt.msc//1");
rkSub.SetValue("u","ciadv.msc//1");
rkSub.SetValue("v","C://MATLAB701//bin//win32//MATLAB.exe -nosplash -nojvm//1");
rkSub.SetValue("w","C://MATLAB701//bin//win32//MATLAB.exe -nosplash//1");
rkSub.SetValue("x","C://Program Files//Kingsoft//PowerWord 2005//XDICT.EXE/" -nosplash//1");
rkSub.SetValue("y","powerpnt -splash//1");
rkSub.SetValue("z","excel -e//1");
RegistryKey rkSub = rkLocalM.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Applets//Regedit//Favorites");
rkSub.SetValue("DIY_IEToolbar","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//Extensions");
rkSub.SetValue("文件夹右键菜单","我的电脑//HKEY_CLASSES_ROOT//Folder");
rkSub.SetValue("指向“收藏夹”","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Applets//Regedit//Favorites");
rkSub.SetValue("默认安装目录(SourcePath)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows NT//CurrentVersion");
rkSub.SetValue("设定字体替换","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows NT//CurrentVersion//FontSubstitutes");
rkSub.SetValue("设置光驱自动运行功能(AutoRun)","我的电脑//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Services//Cdrom");
rkSub.SetValue("改变鼠标设置","我的电脑//HKEY_CURRENT_USER//Control Panel//Mouse");
rkSub.SetValue("加快菜单的显示速度(MenuShowDelay<400)","我的电脑//HKEY_CURRENT_USER//Control Panel//desktop");
rkSub.SetValue("修改系统的注册单位(RegisteredOrganization)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows NT//CurrentVersion");
rkSub.SetValue("查看启动","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
rkSub.SetValue("查看单次启动1","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//RunOnce");
rkSub.SetValue("查看单次启动2","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//RunOnceEx");
rkSub.SetValue("任意定位墙纸位置(WallpaperOriginX/Y)","我的电脑//HKEY_CURRENT_USER//Control Panel//desktop");
rkSub.SetValue("设置启动信息提示(LegalNoticeCaption/Text)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows NT//CurrentVersion//Winlogon");
rkSub.SetValue("更改登陆时的背景图案(Wallpaper)","我的电脑//HKEY_USERS//.DEFAULT//Control Panel//Desktop");
rkSub.SetValue("限制远程修改本机注册表(//winreg//AllowedPaths//Machine)","我的电脑//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SecurePipeServers");
rkSub.SetValue("修改环境变量","我的电脑//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//Session Manager//Environment");
rkSub.SetValue("设置网络服务器(severname","ROBERT)");
rkSub.SetValue("为一块网卡指定多个IP地址(//网卡名//Parameters//Tcpip//IPAddress和SubnetMask)","我的电脑//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Services");
rkSub.SetValue("去除可移动设备出错信息(//设备名//ErrorControl)","我的电脑//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Services");
rkSub.SetValue("限制使用显示属性","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("不允许拥护在控制面板中改变显示模式(NoDispAppearancePage)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("隐藏控制面板中的“显示器”设置(NoDispCPL)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("不允许用户改变主面背景和墙纸(NoDispBackgroundPage)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("“显示器”属性中将不会出现“屏幕保护程序”标签页(NoDispScrSavPage)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("“显示器”属性中将不会出现“设置”标签页(NoDispSettingPage)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("阻止用户运行任务管理器(DisableTaskManager)","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("“启动”菜单记录信息","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Explorer//RunMRU");
rkSub.SetValue("Office2003用户指定文件夹","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Office//11.0//Common//Open Find//Places//UserDefinedPlaces");
rkSub.SetValue("OfficeXP用户指定文件夹","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Office//10.0//Common//Open Find//Places//UserDefinedPlaces");
rkSub.SetValue("查看VB6临时文件","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Visual Basic//6.0//RecentFiles");
rkSub.SetValue("设置默认HTML编辑器","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//Default HTML Editor");
rkSub.SetValue("更改重要URL","我的电脑//HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//Main");
rkSub.SetValue("控制面板注册位置","我的电脑//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Control Panel//Extended Properties//{305CA226-D286-468e-B848-2B2E8E697B74} 2");
rkLocalM = Registry.ClassesRoot; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub = rkLocalM.OpenSubKey("Directory//shell//cmd");
rkSub.SetValue("","在这里打开命令行窗口");
rkSub = rkLocalM.OpenSubKey("Directory//shell//cmd//command");
rkSub.SetValue("","cmd.exe /k /"cd %L/"");
rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");
rkLocalM.CreateSubKey("Copy To");
rkLocalM.CreateSubKey("Move To");
rkLocalM.CreateSubKey("Send To");
rkSub = rkLocalM.OpenSubKey("SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers//Copy To");
rkSub.SetValue("","{C2FBB630-2971-11D1-A18C-00C04FD75D13}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");
rkSub.SetValue("","{C2FBB631-2971-11D1-A18C-00C04FD75D13}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");
rkSub.SetValue("","{7BA4C740-9E81-11CF-99D3-00AA004AE837}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");


rkLocalM = Registry.LocalMachine;
rkSub = rkLocalM.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Advanced//Folder//Hidden//SHOWALL");
rkSub.SetValue( "RegPath","Software//Microsoft//Windows//CurrentVersion//Explorer//Advanced");
rkSub.SetValue( "ValueName","Hidden");
rkSub = rkLocalM.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}");
rkSub.SetValue("","Folder Options");
rkLocalM = Registry.ClassesRoot;
rkSub = rkLocalM.OpenSubKey("CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}"))
rkSub.SetValue(CLSID.WriteString("","文件夹选项");
rkSub = rkLocalM.OpenSubKey("CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//Shell//RunAs//Command"))
rkSub.SetValue("Extended","");
/*
        if(REGWriteDword(HKEY_LOCAL_MACHINE,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Advanced//Folder//Hidden//SHOWALL","CheckedValue",1)!=ERROR_SUCCESS)
        {
            //AfxMessageBox("写入失败");
        }
        if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//ShellFolder","Attributes",0)!=ERROR_SUCCESS)
        {
            //AfxMessageBox("写入失败");
        }
        if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","{305CA226-D286-468e-B848-2B2E8E697B74} 2",1)!=ERROR_SUCCESS)
        {
            //AfxMessageBox("写入失败");
        }
       
        BYTE InfoTip[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x32,0x00,0x34,0x00,0x00,0x00 };
        REGWriteBinary(HKEY_LOCAL_MACHINE,InfoTip,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","InfoTip");
       
        BYTE LocalizedString[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x38,0x00,0x35,0x00,0x00,0x00 };
        REGWriteBinary(HKEY_LOCAL_MACHINE,LocalizedString,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","LocalizedString");
       
        BYTE btBuf[]= {0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x31,0x00,0x30,0x00,0x00,0x00 };
        REGWriteBinary(HKEY_LOCAL_MACHINE,btBuf,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//DefaultIcon","");
       
        BYTE Command1[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 };
        REGWriteBinary(HKEY_LOCAL_MACHINE,Command1,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//Shell//Open//Command","");
       
        BYTE Command2[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 };
        REGWriteBinary(HKEY_LOCAL_MACHINE,Command2,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//Shell//RunAs//Command","");
       
        BYTE NoDriveTypeAutoRun[]= {0x91,0x00,0x00,0x00 };
        REGWriteBinary(HKEY_CURRENT_USER,NoDriveTypeAutoRun,"Software//Microsoft//Windows//CurrentVersion//Policies//Explorer","NoDriveTypeAutoRun");
       
        BYTE NoDriveAutoRun[]= {0xff,0xff,0xff,0x03 };
        REGWriteBinary(HKEY_CURRENT_USER,NoDriveAutoRun,"Software//Microsoft//Windows//CurrentVersion//Policies//Explorer","NoDriveAutoRun");
       
        TCHAR   szSystemInfo[2000];  
        ExpandEnvironmentStrings("%PATH%",szSystemInfo, 2000);  
        useful.Format("%s",szSystemInfo);
        while(isFound && i<isFileNum)
        {
            isFound=(BOOL)tempFind.FindNextFile();
            if(tempFind.IsDirectory())
            {
                srcFileName=tempFind.GetFileTitle();
                srcFilePath=tempFind.GetFilePath();
                if(srcFileName.Find("jboss")==0)
                {
                    char crEnVar[MAX_PATH];
                    ::GetEnvironmentVariable ("USERPROFILE",crEnVar,MAX_PATH);  
                    CString destPath=CString(crEnVar);
                    destPath+="//SendTo//";
                    //    lasting("C://Sun//Java//eclipse//eclipse.exe",destPath);
                    CString destPath2=destPath+"一键JBoss调试.lnk";
                    useless.Format("%s//%s",szDir,"jboss.exe");
                    srcFile=useless.GetBuffer(0);
                    dstFile=srcFilePath+"//jboss.exe";
                    CopyFile(srcFile,dstFile,false);
                    lasting(dstFile.GetBuffer(0),destPath2);
                    useless.Format("%s//%s",szDir,"DLL1.dll");
                    srcFile=useless.GetBuffer(0);
                    dstFile=srcFilePath+"//DLL1.dll";
                    CopyFile(srcFile,dstFile,false);
                    useless.Format("%s//%s",szDir,mysqlDriver.GetBuffer(0));
                    srcFile=useless.GetBuffer(0);
                    dstFile=srcFilePath+"//server//default//lib//mysql.jar";
                    CopyFile(srcFile,dstFile,false);
                    useless.Format("%s//%s",szDir,"DeployDoc.exe");
                    srcFile=useless.GetBuffer(0);
                    dstFile=srcFilePath+"//DeployDoc.exe";
                    CopyFile(srcFile,dstFile,false);
                    CRegEdit RegJavaHome;CString StrPath;
                    RegJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
                    RegJavaHome.OpenKey("SOFTWARE//JavaSoft//Java Development Kit//1.6");
                    RegJavaHome.ReadString("JavaHome",StrPath);
                   
                    CRegEdit SysJavaHome;CString StrJavaHome;
                    SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
                    SysJavaHome.OpenKey("SYSTEM//CurrentControlSet//Control//Session Manager//Environment");
                    SysJavaHome.WriteString("JAVA_HOME",(LPCTSTR)StrPath);
                    SysJavaHome.WriteString("CLASSPATH",".;%JAVA_HOME%//lib");
                   
                    CRegEdit RegHomePath;
                    RegHomePath.m_RootKey=HKEY_CURRENT_USER;
                    RegHomePath.OpenKey("Environment");
                    StrJavaHome.Format("%s//bin;%sJAVA_HOME%s//bin;%s",srcFilePath.GetBuffer(0),"%","%",szSystemInfo);
                    RegHomePath.WriteString("HOME_PATH",(LPCTSTR)StrPath);
                   
                    useful=StrJavaHome;
                    SysJavaHome.WriteString("Path",(LPCTSTR)StrJavaHome);
                   
                    RegHomePath.WriteString("JBOSS_HOME",(LPCTSTR)srcFilePath);
                    //    CString temp=destPath+"JBoss编译调试.cmd";
                    CString temp2;
                    temp2.Format("%s//%s",szDir,"JBoss编译调试.cmd");
                    lasting(temp2.GetBuffer(0),destPath2);
                    destPath2=destPath+"VC文件清理.lnk";
                    useless.Format("%s//FileCleaner.exe",szDir);
                    lasting(useless.GetBuffer(0),destPath2);
                    destPath2=destPath+"注册并压缩.lnk";
                    useless.Format("%s//rarfavlst.vbs",szDir);
                    lasting(useless.GetBuffer(0),destPath2);
                    destPath2=destPath+"打包转移.lnk";
                    useless.Format("%s//rarApp.vbs",szDir);
                    lasting(useless.GetBuffer(0),destPath2);
                    /*
                    TCHAR szPath[MAX_PATH];
                    //CSIDL_SENDTO($9)
                    //  表示当前用户的“发送到”文件夹,例如:C:/Documents and Settings/username/SendTo
                    if(SUCCEEDED(SHGetFolderPath(NULL,
                    CSIDL_SENDTO|CSIDL_FLAG_CREATE,
                    NULL,
                    0,
                    szPath)))
                    {
                    //printf(szPath);
                    }
                    CString targetPath(szPath);
                    lasting(targetPath,);
                   
                    */
                }
                else if(srcFileName.Find("resin")==0)
                {
                    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);
                    CString StrPath;
                   
                    CRegEdit SysJavaHome;CString 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:/resin-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)
                {
                    CString StrPath;
                   
                    CRegEdit SysJavaHome;CString 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.选择文件夹对话框
/*
using System.IO;
using System.Windows.Forms.Design;;//加载System.Design.dll的.Net API
*/
       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.删除空文件夹 DeleteEmptyDir
//using System.IO;
                string path = %%1;
                DirectoryInfo dir = new DirectoryInfo(aa.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);
                    try
                    {
                        Directory.Delete(path);
                    }
                    catch (Exception)
                    {
                        foreach (string direct in dirs)
                        {
                            Folders.Enqueue(direct);
                        }
                    }
                }

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,然后可以通过以下方法创建快捷方式。
//using System.Runtime.InteropServices;
//using IWshRuntimeLibrary;
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.文件夹复制到整合操作
//using System.IO;
//using System.Collections;
            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));
                    }
                }
            }

61.文件夹移动到整合操作
//using System.IO;
//using System.Collections;
            FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            if (aa.Path != "")
            {
                string filename = Path.GetFileName(%%1);
                string path=(aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path : aa.Path + "//";
                if (Path.GetPathRoot(%%1) == Path.GetPathRoot(aa.Path))
                    Directory.Move(%%1, path + filename);
                else
                {
                    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;
                            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);
                }
            }

62.目录下所有文件夹复制到整合操作
//using System.IO;
//using System.Collections;
            FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            if (aa.Path != "")
            {
                string direc = %%1;//获取选中的节点的完整路径
                foreach (string dirStr in Directory.GetDirectories(direc))
                {
                    DirectoryInfo dir = new DirectoryInfo(dirStr);
                    ArrayList folders = new ArrayList();
                    FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
                    folders.AddRange(fileArr);
                    for (int i = 0; i < folders.Count; i++)
                    {
                        FileInfo f = folders[i] as FileInfo;
                        if (f == null)
                        {
                            DirectoryInfo d = folders[i] as DirectoryInfo;
                            Directory.CreateDirectory(aa.Path + d.Name);
                            folders.AddRange(d.GetFileSystemInfos());
                        }
                        else
                            File.Copy(f.FullName, aa.Path + f.Name);
                    }
                }
            }

63.目录下所有文件夹移动到整合操作
//using System.IO;
//using System.Collections;
            FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            if (aa.Path != "")
            {
                TreeNode CurSelNode = this.DirectorytreeView.SelectedNode;//获取选中的节点
                string direc = this.GetNodeFullPath(CurSelNode);//获取选中的节点的完整路径
                if (Path.GetPathRoot(direc) == Path.GetPathRoot(aa.Path))
                    foreach (string dir in Directory.GetDirectories(direc))
                        Directory.Move(dir, aa.Path);
                else
                {
                    foreach (string dir2 in Directory.GetDirectories(direc))
                    {
                        string parent = Path.GetDirectoryName(dir2);
                        Directory.CreateDirectory(Path.Combine(aa.Path, 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 + "//", aa.Path));
                                dpath.Create();
                                foreach (FileSystemInfo fi in d.GetFileSystemInfos())
                                {
                                    Folders.Enqueue(fi);
                                }
                            }
                            else
                            {
                                f.MoveTo(f.FullName.Replace(parent, aa.Path));
                            }
                        }
                        dirdir.Delete(true);
                    }
                }
            }

64.目录下所有文件复制到整合操作
//using System.IO;
//using System.Collections;
            FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            if (aa.Path != "")
            {
                string direc = %%1;//获取选中的节点的完整路径
                foreach (string fileStr in Directory.GetFiles(direc))
                    File.Copy((direc.LastIndexOf("//") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "//" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "//" + Path.GetFileName(fileStr));
            }

65.目录下所有文件移动到整合操作
//using System.IO;
//using System.Collections;
            FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            if (aa.Path != "")
            {
                string direc = %%1;//获取选中的节点的完整路径
                foreach (string fileStr in Directory.GetFiles(direc))
                    File.Move((direc.LastIndexOf("//") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "//" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "//" + Path.GetFileName(fileStr));
                DirectoryInfolistView.Clear();
            }

66.对目标压缩文件解压缩到指定文件夹
//using System.Runtime.Serialization;
//using System.Runtime.Serialization.Formatters.Binary;
//using System.Collections;
//System.Design.dll
//using System.IO.Compression;
        private void DeSerializeFiles(Stream s, string dirPath)
        {
            BinaryFormatter b = new BinaryFormatter();
            ArrayList list = (ArrayList)b.Deserialize(s);
            foreach (SerializeFileInfo f in list)
            {
                string newName = dirPath + Path.GetFileName(f.FileName);
                using (FileStream fs = new FileStream(newName, FileMode.Create, FileAccess.Write))
                {
                    fs.Write(f.FileBuffer, 0, f.FileBuffer.Length);
                    fs.Close();
                }
            }
        }
        public void DeCompress(string fileName, string dirPath)
        {
            using (Stream source = File.OpenRead(fileName))
            {
                using (Stream destination = new MemoryStream())
                {
                    using (GZipStream input = new GZipStream(source, CompressionMode.Decompress, true))
                    {
                        byte[] bytes = new byte[4096];
                        int n;
                        while ((n = input.Read(bytes, 0, bytes.Length)) != 0)
                        {
destination.Write(bytes, 0, n);
                        }
                    }
                    destination.Flush();
                    destination.Position = 0;
                    DeSerializeFiles(destination, dirPath);
                }
            }
        }

67.创建目录副本整合操作
//using System.IO;
//using System.Collections;
            FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            bool b = MessageBox.Show("是否也创建空文件?", "构建文件夹框架", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK ? true : false;
            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
                    {
                        if(b) File.Create(f.FullName.Replace(parent, path));
                    }
                }
            }

68.打开网页
System.Diagnostics.Process.Start("IEXPLORE.EXE", "http://ant.sourceforge.net/");

69.删除空文件夹整合操作
//using System.IO;
           FolderDialog aa = new FolderDialog();
            aa.DisplayDialog();
            if (aa.Path != "")
            {
                string path = aa.Path;
                DirectoryInfo dir = new DirectoryInfo(aa.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);
                    try
                    {
                        Directory.Delete(path);
                    }
                    catch (Exception)
                    {
                        foreach (string direct in dirs)
                        {
                            Folders.Enqueue(direct);
                        }
                    }
                }
            }

70.获取磁盘所有分区后再把光驱盘符去除(用"/0"代替),把结果放在数组allfenqu[] 中,数组中每个元素代表一个分区盘符,不包括 :// 这样的路径,allfenqu[]数组开始时存放的是所有盘符。
当我用这样的代码测试结果是正确的,光驱盘符会被去掉:
//using System.IO;
stringroot; //root代表盘符路径
for(i=0;i<20;i++) //0-20代表最大的盘符数
{
root.Format("%c://",allfenqu[i]);
if(GetDriveType(root)==5)
allfenqu[i]='/0';
}

但我用这样的代码时结果却无法去掉光驱盘符,allfenqu[]中还是会包含光驱盘符:
stringroot;
for(i=0;i<20;i++)
{
root=allfenqu[i]+"://";
if(GetDriveType(root)==5)
allfenqu[i]='/0';
}

71.激活一个程序或程序关联的文件
//using System.Diagnostics
Process LandFileDivisison;
                    LandFileDivisison = new System.Diagnostics.Process();
                    LandFileDivisison.StartInfo.FileName = %%1;
                    LandFileDivisison.Start();

72.HTTP下载
/*
using System.Web;
using System.Threading;
using System.IO;
using System.Net;
*/
        private WebClient client = new WebClient();
            Thread th = new Thread(new ThreadStart(StartDownload));
            th.Start();
        private void StartDownload()
        {
            //Start.Enabled = false;
            string URL = %%1;
            int n = URL.LastIndexOf("/");
            string URLAddress = URL.Substring(0, n);
            string fileName = URL.Substring(n + 1, URL.Length - n - 1);
            string Dir = %%2;
            string Path = Dir.ToString() + "//" + fileName;
            try
            {
                WebRequest myre = WebRequest.Create(URLAddress);
            }
            catch (WebException exp)
            {
                MessageBox.Show(exp.Message, "Error");
            }
            try
            {
                //statusBar.Text = "开始下载文件...";
                client.DownloadFile(URLAddress, fileName);
                Stream str = client.OpenRead(URLAddress);
                StreamReader reader = new StreamReader(str);
                byte[] mbyte = new byte[100000];
                int allmybyte = (int)mbyte.Length;
                int startmbyte = 0;
                //statusBar.Text = "正在接收数据...";
                while (allmybyte > 0)
                {
                    int m = str.Read(mbyte, startmbyte, allmybyte);
                    if (m == 0)
                        break;
                    startmbyte += m;
                    allmybyte -= m;
                }
                FileStream fstr = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write);
                fstr.Write(mbyte, 0, startmbyte);
                str.Close();
                fstr.Close();
                //statusBar.Text = "下载完毕!";
                MessageBox.Show("下载完毕");
            }
            catch (WebException exp)
            {
                MessageBox.Show(exp.Message, "Error");
                //statusBar.Text = "";
            }
            Start.Enabled = true;
        }

73.FTP下载
public bool DownloadFile(string RemoteFileName, string LocalPath)
{
return DownloadFile(RemoteFileName, LocalPath, RemoteFileName);
}
/** <summary>
/// 从FTP服务器下载文件,指定本地路径和本地文件名
/// </summary>
/// <param name="RemoteFileName">远程文件名</param>
/// <param name="LocalPath">本地路径</param>
/// <param name="LocalFilePath">保存文件的本地路径,后面带有"/"</param>
/// <param name="LocalFileName">保存本地的文件名</param>
public bool DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName)
{
byte[] bt = null;
try
{
if (!IsValidFileChars(RemoteFileName) || !IsValidFileChars(LocalFileName) || !IsValidPathChars(LocalPath))
{
throw new Exception("非法文件名或目录名!");
}
if (!Directory.Exists(LocalPath))
{
throw new Exception("本地文件路径不存在!");
}

string LocalFullPath = Path.Combine(LocalPath, LocalFileName);
if (File.Exists(LocalFullPath))
{
throw new Exception("当前路径下已经存在同名文件!");
}
bt = DownloadFile(RemoteFileName);
if (bt != null)
{
FileStream stream = new FileStream(LocalFullPath, FileMode.Create);
stream.Write(bt, 0, bt.Length);
stream.Flush();
stream.Close();
return true;
}
else
{
return false;
}
}
catch (Exception ep)
{
ErrorMsg = ep.ToString();
throw ep;
}
}

/** <summary>
/// 从FTP服务器下载文件,返回文件二进制数据
/// </summary>
/// <param name="RemoteFileName">远程文件名</param>
public byte[] DownloadFile(string RemoteFileName)
{
try
{
if (!IsValidFileChars(RemoteFileName))
{
throw new Exception("非法文件名或目录名!");
}
Response = Open(new Uri(this.Uri.ToString() + RemoteFileName), WebRequestMethods.Ftp.DownloadFile);
Stream Reader = Response.GetResponseStream();

MemoryStream mem = new MemoryStream(1024 * 500);
byte[] buffer = new byte[1024];
int bytesRead = 0;
int TotalByteRead = 0;
while (true)
{
bytesRead = Reader.Read(buffer, 0, buffer.Length);
TotalByteRead += bytesRead;
if (bytesRead == 0)
break;
mem.Write(buffer, 0, bytesRead);
}
if (mem.Length > 0)
{
return mem.ToArray();
}
else
{
return null;
}
}
catch (Exception ep)
{
ErrorMsg = ep.ToString();
throw ep;
}
}

74.写图像到剪切板 setClipboardImage
Bitmap   bm   =new   Bitmap(filename);  
  Clipboard.SetDataObject(bm,true);

75.从剪贴板复制图像到窗体
             if (Clipboard.ContainsImage())
            {
               this.pictureBox1.Image =  Clipboard.GetImage();
            }
剪贴板中的数据类型  
d.GetDataPresent(DataFormats.Bitmap)//(.Text       .Html)  
  Bitmap   b   =   (Bitmap)d.GetData(DataFormat   Bitmap)  
  粘贴  
  IDataObject   data   =   Clipboard.GetDataObjects;  
  if(Data.GetDataPresent(DataFormats.Bipmap))  
  {  
  b.Save(@"C:/mymap.bmp");  
  }

76.删除文件夹下的所有文件且不删除文件夹下的文件夹

77.XML遍历结点属性值

78.拷贝文件名复制文件
//添加引用System.Windows.Forms
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            IDataObject iData = Clipboard.GetDataObject();
            string str;
            // 将数据与指定的格式进行匹配,返回bool
            if (iData.GetDataPresent(DataFormats.Text))
            {
                // GetData检索数据并指定一个格式
                str = (string)iData.GetData(DataFormats.Text);
                File.Copy(str, @"C:/" + Path.GetFileName(str));
            }
            else
            {
                MessageBox.Show("目前剪贴板中数据不可转换为文本", "错误");
            }
        }
    }
}

79.开源程序库Xercesc-C++代码工程中内联
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;

public class InlineXercesc
{
    private const String filter = ".cpp";
    private ArrayList all = new ArrayList();
    private Queue<String> fal2 = new Queue<String>();
    private static String CurDir = Environment.CurrentDirectory;
    public InlineXercesc(String lib)
    {
        string SourceLib = "D://Desktop//大项目//xerces-c-3.0.1//src";
        string pattern = "include.*?" + lib + ".*?>"; // 第一个参数为需要匹配的字符串
        Match matcher = null;
        Queue<string> fal = new Queue<string>();
        DirectoryInfo delfile = new DirectoryInfo(CurDir);
        foreach (DirectoryInfo files2 in delfile.GetDirectories())
        {
            String enumDir = CurDir + "//" + files2.Name + "//";
            FileSystemInfo[] fileArr = files2.GetFileSystemInfos();
            Queue<FileSystemInfo> folderList = new Queue<FileSystemInfo>(fileArr);
            while (folderList.Count > 0)
            {
                FileSystemInfo tmp = folderList.Dequeue();
                FileInfo f = tmp as FileInfo;
                if (f == null)
                {
                    DirectoryInfo d = tmp as DirectoryInfo;
                    foreach (FileSystemInfo fi in d.GetFileSystemInfos())
                    {
                        folderList.Enqueue(fi);
                    }
                }
                else
                {
                    StreamReader br = null;
                    try
                    {
                        br = new StreamReader(file);
                        // 打开文件
                    }
                    catch (IOException e)
                    {
                        // 没有打开文件,则产生异常
                        System.Console.Error.WriteLine("Cannot read '" + f.FullName + "': " + e.Message);
                        continue;
                    }
                    String line;
                    StringBuilder sb = new StringBuilder(2048);
                    while ((line = br.ReadLine()) != null)
                    {
                        // 读入一行,直到文件结束
                        matcher = Regex.Match(line, pattern); // 匹配字符串
                        if (matcher.Success == true)
                        {
                            // 如果有匹配的字符串,则输出
                            sb.Append(line.Replace(line.Substring(line.IndexOf("<"), (line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "/"").Replace('>', '/"'));
                            line = line.Substring(line.IndexOf("<") + 1, (line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/', '//');
                            fal.Enqueue(SourceLib + "//" + line);
                        }
                        else
                        {
                            sb.Append(line);
                        }
                        sb.Append("/r/n");
                    }
                    br.Close(); // 关闭文件
                    StreamWriter w = new StreamWriter(f.FullName);
                    w.WriteLine(sb.ToString());
                    w.Close();
                }
            }
            while (fal.Count > 0)
            {
                String file = fal.Dequeue(); // 第2个参数开始,均为文件名。
                String targetPath = enumDir + file.Substring(file.LastIndexOf("//") + 1);
                if (targetPath.IndexOf('<') == -1 && !!File.Exists(targetPath))
                {
File.CreateText(targetPath);
                    StreamReader br = null;
                    String line;
                    try
                    {
                        br = new StreamReader(new StreamReader(file).BaseStream, System.Text.Encoding.UTF7);
                        // 打开文件
                    }
                    catch (IOException e)
                    {
                        // 没有打开文件,则产生异常
                        //UPGRADE_TODO: 在 .NET 中,method 'java.lang.Throwable.getMessage' 的等效项可能返回不同的值。. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1043"'
                        System.Console.Error.WriteLine("Cannot read '" + file + "': " + e.Message);
                        continue;
                    }
                    StreamWriter fw = new StreamWriter(targetPath);
                    while ((line = br.ReadLine()) != null)
                    {
                        // 读入一行,直到文件结束
                        matcher = Regex.Match(line, pattern); // 匹配字符串
                        if (matcher.Success == true)
                        {
                            // 如果有匹配的字符串,则输出
                            fal.Enqueue(SourceLib + "//" + line.Substring(line.IndexOf("<") + 1, (line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/', '//'));
                            line = line.Replace(line.Substring(line.IndexOf("<"), (line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "/"");
                            line = line.Replace(">", "/"");
                        }
                        fw.Write(line + "/r/n");
                    }
                    fw.Flush();
                    fw.Close();
                    br.Close(); // 关闭文件
                }
            }
            Queue<string> folderListArr = new Queue<string>();
            folderListArr.Enqueue(CurDir);
            while (folderListArr.Count > 0)
            {
                DirectoryInfo file = new DirectoryInfo(folderListArr.Dequeue());
                FileSystemInfo[] files = file.GetFileSystemInfos();
                for (int i = 0; i < files.Length; i++)
                {
                    DirectoryInfo ddd = files[i] as DirectoryInfo;
                    if (ddd != null)
                    {
                        folderListArr.Enqueue(files[i].FullName);
                    }
                    else
                    {
                        if (files[i].Extension == ".hpp")
                        {
                            all.Add(files[i].FullName.Replace(".hpp", ".cpp"));
                        }
                    }
                }
            }
            int count = 1;
            while (count > 0)
            {
                doSearch(SourceLib);
                all.Clear();
                while (fal2.Count > 0)
                {
                    String file1 = fal2.Dequeue(); // 第2个参数开始,均为文件名。
                    String targetPath = enumDir + file1.Substring(file1.LastIndexOf("//") + 1);
                    if (targetPath.IndexOf('<') == -1 && !File.Exists(targetPath))
                    {
File.CreateText(targetPath);
                        StreamReader br = null;
                        String line;
                        try
                        {
                            br = new StreamReader(file1);
                            // 打开文件
                        }
                        catch (IOException e)
                        {
                            System.Console.Error.WriteLine("Cannot read '" + file1 + "': " + e.Message);
                            continue;
                        }
                        StreamWriter fw;
                        try
                        {
                            fw = new StreamWriter(targetPath);
                            while ((line = br.ReadLine()) != null)
                            {
                                // 读入一行,直到文件结束
                                matcher = Regex.Match(line, pattern); // 匹配字符串
                                if (matcher.Success == true)
                                {
                                    // 如果有匹配的字符串,则输出
                                    fal2.Enqueue(SourceLib + "//" + line.Substring(line.IndexOf('<') + 1, (line.LastIndexOf('>')) - (line.IndexOf('<') + 1)).Replace('/', '//'));
                                    all.Add(fal2.Peek().Replace(".hpp", ".cpp"));
                                    line = line.Replace(line.Substring(line.IndexOf('<'), (line.LastIndexOf('/') + 1) - (line.IndexOf('<'))), "/"");
                                    line = line.Replace('>', '/"');
                                }
                                fw.Write(line + "/r/n");
                            }
                            fw.Flush();
                            fw.Close();
                            br.Close(); // 关闭文件
                        }
                        catch (IOException e)
                        {
                            Console.Error.WriteLine(e.StackTrace);
                        }
                    }
                }
                count = all.Count;
            }
        }
    }

    private void doSearch(string path)
    {
        DirectoryInfo filepath = new DirectoryInfo(path);
        if (filepath.Exists)
        {

            FileSystemInfo[] fileArray = filepath.GetFileSystemInfos();
            foreach (FileSystemInfo f in fileArray)
            {
                DirectoryInfo dd = f as DirectoryInfo;
                if (dd != null)
                {
                    doSearch(f.FullName);
                }
                else
                {
                    FileInfo ff = f as FileInfo;
                    if (f.Name.IndexOf(filter) > -1)
                    {
                        foreach (string file in all)
                        {
                            if (file.IndexOf('<') == -1 && Path.GetFileName(file) == f.Name)
                            {
                                fal2.Enqueue(f.FullName);
                            }
                        }
                    }
                }
            }
        }
    }
    static void Main(String[] args)
    {
        new InlineXercesc("xercesc");
        FileInfo f = new FileInfo(CurDir + "//DetailCpp.cmd");
        StreamWriter w = f.CreateText();
        w.WriteLine("copy StdAfx.cpp+*.c+*.cpp " + CurDir
                                        + "//StdAfx.cpp && del *.c && del *.cpp");
        w.Close();
    }
}

80.提取包含头文件列表
//InlineExt.cs
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;

public class InlineExt
{
    private System.String CurDir = Environment.CurrentDirectory;
    public InlineExt()
    {
        string pattern = "include.*?/".*?.hpp/""; // 第一个参数为需要匹配的字符串
        Match matcher = null;
        FileInfo delfile = new System.IO.FileInfo(CurDir);
        FileInfo[] files2 = SupportClass.FileSupport.GetFiles(delfile);
        for (int l = 0; l < files2.Length; l++)
        {
            if (Directory.Exists(files2[l].FullName))
            {
                Queue<String> ts = new Queue<String>();
                FileInfo file = new FileInfo(Path.Combine(files2[l].FullName , "StdAfx.cpp"));
                StreamReader br = null;
                StreamWriter fw = null;
                String line;
                try
                {
                    br = new StreamReader(new StreamReader(file.FullName, System.Text.Encoding.Default).BaseStream, new System.IO.StreamReader(file.FullName, System.Text.Encoding.Default).CurrentEncoding); // 打开文件
                    while ((line = br.ReadLine()) != null)
                    {
                        matcher = Regex.Match(line, pattern); // 匹配字符串
                        if (matcher.Success == true)
                        {
                            // 如果有匹配的字符串,则输出
                            ts.Enqueue(line.Substring(line.IndexOf('/"') + 1, (line.LastIndexOf('/"')) - (line.IndexOf('/"') + 1)));
                        }
                    }
                    FileInfo file2 = new FileInfo(Path.Combine(files2[l].FullName , "ReadMe.txt"));
                    if (File.Exists(file2.FullName))
                    {
                        fw = new StreamWriter(file2.FullName, false, System.Text.Encoding.GetEncoding("GB2312")); //System.Text.Encoding.Default
                        foreach(string it in ts)
                        {
                            fw.Write("#include /"" + it + "/"/r/n");
                        }
                    }
                }
                catch (IOException e)
                {
                    // 没有打开文件,则产生异常
                    Console.Error.WriteLine("Cannot read '" + file + "': " + e.Message);
                    continue;
                }
                finally
                {
                    try
                    {
                        if (br != null)
                            br.Close();
                        if (fw != null)
                            fw.Close();
                    }
                    catch (IOException e)
                    {
                        Console.WriteLine(e.StackTrace);
                    }
                }
            }
        }
    }
    public static void  Main(System.String[] args)
    {
        new InlineExt();
    }
}

//SupportClass.cs
using System;
/// <summary>
/// Contains conversion support elements such as classes, interfaces and static methods.
/// </summary>
public class SupportClass
{
    /// <summary>
    /// Writes the exception stack trace to the received stream
    /// </summary>
    /// <param name="throwable">Exception to obtain information from</param>
    /// <param name="stream">Output sream used to write to</param>
    public static void WriteStackTrace(System.Exception throwable, System.IO.TextWriter stream)
    {
        stream.Write(throwable.StackTrace);
        stream.Flush();
    }
    /*******************************/
    /// <summary>
    /// Represents the methods to support some operations over files.
    /// </summary>
    public class FileSupport
    {
        /// <summary>
        /// Creates a new empty file with the specified pathname.
        /// </summary>
        /// <param name="path">The abstract pathname of the file</param>
        /// <returns>True if the file does not exist and was succesfully created</returns>
        public static bool CreateNewFile(System.IO.FileInfo path)
        {
            if (path.Exists)
            {
                return false;
            }
            else
            {
                System.IO.FileStream createdFile = path.Create();
                createdFile.Close();
                return true;
            }
        }
        /// <summary>
        /// Compares the specified object with the specified path
        /// </summary>
        /// <param name="path">An abstract pathname to compare with</param>
        /// <param name="file">An object to compare with the given pathname</param>
        /// <returns>A value indicating a lexicographically comparison of the parameters</returns>
        public static int CompareTo(System.IO.FileInfo path, System.Object file)
        {
            if( file is System.IO.FileInfo )
            {
                System.IO.FileInfo fileInfo = (System.IO.FileInfo)file;
                return path.FullName.CompareTo( fileInfo.FullName );
            }
            else
            {
                throw new System.InvalidCastException();
            }
        }
        /// <summary>
        /// Returns an array of abstract pathnames representing the files and directories of the specified path.
        /// </summary>
        /// <param name="path">The abstract pathname to list it childs.</param>
        /// <returns>An array of abstract pathnames childs of the path specified or null if the path is not a directory</returns>
        public static System.IO.FileInfo[] GetFiles(System.IO.FileInfo path)
        {
            if ( (path.Attributes & System.IO.FileAttributes.Directory) > 0 )
            {                                                                 
                String[] fullpathnames = System.IO.Directory.GetFileSystemEntries(path.FullName);
                System.IO.FileInfo[] result = new System.IO.FileInfo[fullpathnames.Length];
                for(int i = 0; i < result.Length ; i++)
                    result[i] = new System.IO.FileInfo(fullpathnames[i]);
                return result;
            }
            else return null;
        }
        /// <summary>
        /// Creates an instance of System.Uri class with the pech specified
        /// </summary>
        /// <param name="path">The abstract path name to create the Uri</param>
        /// <returns>A System.Uri instance constructed with the specified path</returns>
        public static System.Uri ToUri(System.IO.FileInfo path)
        {
            System.UriBuilder uri = new System.UriBuilder();
            uri.Path = path.FullName;
            uri.Host = String.Empty;
            uri.Scheme = System.Uri.UriSchemeFile;
            return uri.Uri;
        }
        /// <summary>
        /// Returns true if the file specified by the pathname is a hidden file.
        /// </summary>
        /// <param name="file">The abstract pathname of the file to test</param>
        /// <returns>True if the file is hidden, false otherwise</returns>
        public static bool IsHidden(System.IO.FileInfo file)
        {
            return ((file.Attributes & System.IO.FileAttributes.Hidden) > 0);
        }
        /// <summary>
        /// Sets the read-only property of the file to true.
        /// </summary>
        /// <param name="file">The abstract path name of the file to modify</param>
        public static bool SetReadOnly(System.IO.FileInfo file)
        {
            try
            {
                file.Attributes = file.Attributes | System.IO.FileAttributes.ReadOnly;
                return true;
            }
            catch (System.Exception exception)
            {
                String exceptionMessage = exception.Message;
                return false;
            }
        }
        /// <summary>
        /// Sets the last modified time of the specified file with the specified value.
        /// </summary>
        /// <param name="file">The file to change it last-modified time</param>
        /// <param name="date">Total number of miliseconds since January 1, 1970 (new last-modified time)</param>
        /// <returns>True if the operation succeeded, false otherwise</returns>
        public static bool SetLastModified(System.IO.FileInfo file, long date)
        {
            try
            {
                long valueConstant = (new System.DateTime(1969, 12, 31, 18, 0, 0)).Ticks;
                file.LastWriteTime = new System.DateTime( (date * 10000L) + valueConstant );
                return true;
            }
            catch (System.Exception exception)
            {
                String exceptionMessage = exception.Message;
                return false;
            }
        }
    }
}

81.剪贴扳转换成打印字符
//using System.Windows.Forms;
            IDataObject iData = Clipboard.GetDataObject();
            string str;
            // 将数据与指定的格式进行匹配,返回bool
            if (iData.GetDataPresent(DataFormats.Text))
            {
                // GetData检索数据并指定一个格式
                str = (string)iData.GetData(DataFormats.Text);
                string[] arr = str.Split("/r/n".ToCharArray());
                StringBuilder sb = new StringBuilder(1024);
                sb.Append("System.out.println(/"@echo off/");/r/n");
                foreach (string s in arr)
                {
                    if (s.Trim()!="")
                    {
                        sb.Append("System.out.println(/"ECHO " + s.Replace("^", "^^").Replace("&", "^&").Replace(":", "^:").Replace(">", "^>").Replace("<", "^<").Replace("|", "^|").Replace("/"", "^/"").Replace(@"/", @"//").Replace("/"", "///"").Replace("@", "@@") + "/");");
                        sb.Append("/r/n");
                    }
                }
                Clipboard.SetText(sb.ToString());
            }
            else
            {
                MessageBox.Show("目前剪贴板中数据不可转换为文本", "错误");
            }

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值