C#文件操作

来源:互联网 发布:数据格式化后怎么恢复 编辑:程序博客网 时间:2024/06/05 17:49
1.创建文件夹//using System.IO;Directory.CreateDirectory(%%1);2.创建文件//using System.IO;File.Create(%%1);3.删除文件//using System.IO;File.Delete(%%1);4.删除文件夹//using System.IO;Directory.Delete(%%1);5.删除一个目录下所有的文件夹//using System.IO;foreach (string dirStr in Directory.GetDirectories(%%1)){DirectoryInfo dir = new DirectoryInfo(dirStr);ArrayList folders=new ArrayList();FileSystemInfo[] fileArr = dir.GetFileSystemInfos();for (int i = 0; i < folders.Count; i++){FileInfo f = folders[i] as FileInfo;if (f == null){DirectoryInfo d = folders[i] as DirectoryInfo;d.Delete();}}}6.清空文件夹//using System.IO;Directory.Delete(%%1,true);Directory.CreateDirectory(%%1);7.读取文件7.1.操作系统默认编码//using System.IO;StreamReader s = File.OpenText(%%1);string %%2 = null;while ((%%2 = s.ReadLine()) != null){%%3}s.Close();7.2.UTF-8编码/*using System.IO;using System.Text;*/StreamReader srfile = new StreamReader(%%1,Encoding.UTF8);while ((String %%2 = srfile.ReadLine()) != null){%%3}srfile.Close();7.3.分块读取/*using System.IO;using System.Text;*/try{FileStream fs=new FileStream(%%1,FileMode.Open,FileAccess.Read);BinaryReader br=new BinaryReader(fs,new ASCIIEncoding());byte[] chunk;do{chunk=br.ReadBytes(10240);if(chunk.Length>0){%%2 //chunk,chunk.Length}}while(chunk.Length>0);fs.Close();}catch{//return -1;}8.写入文件//using System.IO;FileInfo f = new FileInfo(%%1);StreamWriter w = f.CreateText();w.WriteLine(%%2);w.Flush();w.Close();9.写入随机文件//using System.IO;byte[] dataArray = new byte[100000];//new Random().NextBytes(dataArray);using(FileStream FileStream = new FileStream(%%1, FileMode.Create)){// Write the data to the file, byte by byte.for(int i = 0; i < dataArray.Length; i++){FileStream.WriteByte(dataArray[i]);}// Set the stream position to the beginning of the file.FileStream.Seek(0, SeekOrigin.Begin);// Read and verify the data.for(int i = 0; i < FileStream.Length; i++){if(dataArray[i] != FileStream.ReadByte()){//写入数据错误return;}}//"数据流"+FileStream.Name+"已验证"}10.读取文件属性//using System.IO;FileInfo f = new FileInfo(%%1);//f.CreationTime,f.FullNameif((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(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2+Path.DirectorySeparatorChar;string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar);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(Path.DirectorySeparatorChar) == parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar, 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);}elseFile.Copy(file.FullName, path + file.Name);}}15.移动文件夹/*using System.IO;using System.Collections;*/string filename = Path.GetFileName(%%1);string path=(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2 + Path.DirectorySeparatorChar;if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))Directory.Move(%%1, path + filename);else{string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar);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(Path.DirectorySeparatorChar) == parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar, 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(Path.DirectorySeparatorChar) == dir2.Length - 1) ? dir2 : dir2 + Path.DirectorySeparatorChar;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(Path.DirectorySeparatorChar) == parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar, %%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(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2 + Path.DirectorySeparatorChar;string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar);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(Path.DirectorySeparatorChar) == parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar, 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(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + Path.DirectorySeparatorChar+Path.GetFileName(fileStr),(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + Path.DirectorySeparatorChar+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+Path.DirectorySeparatorChar+file.getname(%%1));26.移动一个文件夹下所有文件到另一个目录//using System.IO;foreach (string fileStr in Directory.GetFiles(%%1))File.Move((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + Path.DirectorySeparatorChar+Path.GetFileName(fileStr),(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + Path.DirectorySeparatorChar+Path.GetFileName(fileStr));27.指定目录下搜索文件/*using System.Text;using System.IO;*/string fileName = %%1;DriveInfo[] drives = DriveInfo.GetDrives();string parent = Path.GetDirectoryName(%%2);DirectoryInfo dir = new DirectoryInfo((%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2 + Path.DirectorySeparatorChar);FileSystemInfo[] fileArr;try{fileArr = dir.GetFileSystemInfos();}catch (Exception){continue;}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;try{foreach (FileSystemInfo fi in d.GetFileSystemInfos()){Folders.Enqueue(fi);}}catch (Exception) { }}else if (f.Name.IndexOf(fileName) > -1){%%3=f.FullName;return;}}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(Path.DirectorySeparatorChar)+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(Path.DirectorySeparatorChar) + 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.Windows.Forms; //加载System.Windows.Forms.dll的.Net APIusing System.IO;using System.Text;*/OpenFileDialog jfc = new OpenFileDialog();OpenFileDialog jfc2 = new OpenFileDialog();jfc.Filter = "可执行文件(*.exe)|*.exe|压缩文件(*.zip)|*.zip";jfc2.Filter = "文本文件(*.txt)|*.txt";if(jfc.ShowDialog() == DialogResult.OK && jfc2.ShowDialog() == DialogResult.OK){byte[] sRead=new byte[fsr.Length];FileStream fsr = new FileStream(jfc.FileName,fsr.Read(sRead, FileMode.Open, FileAccess.Read));fsr.Read(sRead,0,sRead.Length);fsr.Close();FileInfo f=new FileInfo(jfc2.FileName);StreamWriter w=f.CreateText();int ka=3,kb=5,kc=2,kd=7,js=0;StringBuilder builder = new StringBuilder(sRead.Length * 2);for(int i=0;i<sRead.Length-1;i+=2){char c1=sRead[i];char c2=sRead[i+1];int tmp=ka*c1+kc*c2;while(tmp<0)tmp+=1024;char s1=tmp%1024;char high = (char)((s1 >> 4) & 0x0f);char low = (char)(s1 & 0x0f);high=high<10?(high+'0'):(high-(char)10+'A');low=low<10?(low+'0'):(low-(char)10+'A');builder.Append(high);builder.Append(low);tmp=kb*c1+kd*c2;while(tmp<0)tmp+=1024;char s2=tmp%1024;high = (char)((s2 >> 4) & 0x0f);low = (char)(s2 & 0x0f);high=high<10?(high+'0'):(high-(char)10+'A');low=low<10?(low+'0'):(low-(char)10+'A');builder.Append(high);builder.Append(low);}if(js==1){char s3=(sRead[sRead.Length-1]-4)%1024;char high = (char)((s3 >> 4) & 0x0f);char low = (char)(s3 & 0x0f);high=high<10?(high+'0'):(high-(char)10+'A');low=low<10?(low+'0'):(low-(char)10+'A');builder.Append(high);builder.Append(low);}w.Write(builder.ToString());w.Flush();w.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=%%4; //"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=%%4; //"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;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 filereturn;}infile.Close();MemoryStream ms = new MemoryStream();// Use the newly created memory stream for the compressed data.DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true);//CompressioncompressedzipStream.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 trycatch (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-basedplatforms, 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 requiredpermissions.} 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 filereturn;}infile.Close();MemoryStream ms = new MemoryStream();// ms.Position = 0;DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);//Decompressionbyte[] decompressedBuffer = new byte[buffer.Length *2];zipStream.Close();FileInfo f = new FileInfo(%%2);StreamWriter w = f.CreateText();w.Write(decompressedBuffer);w.Close();} // end trycatch (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-basedplatforms, 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 requiredpermissions.}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.IDEA加密算法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 Flagsprivate 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 Filesprivate ArrayList m_arrFiles = new ArrayList();//Propertiespublic 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 Filesprivate 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 subdirectoriesstring[] dirList = Directory.GetDirectories(strDir);for(int i=0; i<dirList.Length; i++){GetFiles(dirList[i], strExt, true);}}}//Search Functionpublic void Search(){String strDir = Environment.CurrentDirectory;//First empty the listm_arrFiles.Clear();//Create recursively a list with all the files complying with the criteriaString[] astrFiles = m_strFiles.Split(new Char[] {','});for(int i=0; i<astrFiles.Length; i++){//Eliminate white spacesastrFiles[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 stringString 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 GrepMatch mtch;if(m_bIgnoreCase == true)mtch = Regex.Match(strLine, m_strRegEx, RegexOptions.IgnoreCase);elsemtch = 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;}elsestrResults += (string)enm.Current + ":\r\n";bFirst = false;}//Add the Line to Results stringif(m_bLineNumbers == true)strResults += " " + iLine + ": " + strLine + "\r\n";elsestrResults += " " + 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!");elseConsole.WriteLine(strResults);}//Print Helpprivate 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 objectConsoleGrep grep = new ConsoleGrep();// The arguments /e and /f are mandatoryif(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;elsegrep.LineNumbers = (CommandLine["n"] != null);if(grep.JustFiles == true)grep.CountLines = false;elsegrep.CountLines = (CommandLine["c"] != null);// Do the searchgrep.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 + Path.DirectorySeparatorChar + 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 == 3){ReplaceFiles(args[0],args[1],args[2],null);}if (args.Length == 4){if (args[3].Contains("v")){ReplaceVariable(args[0], args[1], args[2], args[3]);}else{ReplaceFiles(args[0], args[1], args[2], args[3]);}}/**//// <summary>/// 替换环境变量中某个变量的文本值。可以是系统变量,用户变量,临时变量。替换时会覆盖原始值。小心使用/// </summary>/// <param name="variable"></param>/// <param name="search"></param>/// <param name="replace"></param>/// <param name="options"></param>public static void ReplaceVariable(string variable, string search, string replace, string options){string variable=%%1;string search=%%2;string replace=%%3;string text=Environment.GetEnvironmentVariable(variable);System.Windows.Forms.MessageBox.Show(text);text=ReplaceText(text, search, replace, options);Environment.SetEnvironmentVariable(variable, text);text = Environment.GetEnvironmentVariable(variable);System.Windows.Forms.MessageBox.Show(text);}/**//// <summary>/// 批量替换文件文本/// </summary>/// <param name="args"></param>public static void ReplaceFiles(string path,string search, string replace, string options){string path=%%1;string search=%%2;string replace=%%3;string[] fs;if(File.Exists(path)){ReplaceFile(path, search, replace, options);return;}if (Directory.Exists(path)){fs = Directory.GetFiles(path);foreach (string f in fs){ReplaceFile(f, search, replace, options);}return;}int i=path.LastIndexOf("\");if(i<0)i=path.LastIndexOf("/");string d, searchfile;if (i > -1){d = path.Substring(0, i + 1);searchfile = path.Substring(d.Length);}else{d = System.Environment.CurrentDirectory;searchfile = path;}searchfile = searchfile.Replace(".", @".");searchfile = searchfile.Replace("?", @"[^.]?");searchfile = searchfile.Replace("*", @"[^.]*");//System.Windows.Forms.MessageBox.Show(d); System.Windows.Forms.MessageBox.Show(searchfile);if (!Directory.Exists(d)) return;fs = Directory.GetFiles(d);foreach (string f in fs){if(System.Text.RegularExpressions.Regex.IsMatch(f,searchfile))ReplaceFile(f, search, replace, options);}}/**//// <summary>/// 替换单个文本文件中的文本/// </summary>/// <param name="filename"></param>/// <param name="search"></param>/// <param name="replace"></param>/// <param name="options"></param>/// <returns></returns>public static bool ReplaceFile(string filename, string search, string replace,string options){string path=%%1;string search=%%2;string replace=%%3;FileStream fs = File.OpenRead(filename);//判断文件是文本文件还二进制文件。该方法似乎不科学byte b;for (long i = 0; i < fs.Length; i++){b = (byte)fs.ReadByte();if (b == 0){System.Windows.Forms.MessageBox.Show("非文本文件");return false;//有此字节则表示改文件不是文本文件。就不用替换了}}//判断文本文件编码规则。byte[] bytes = new byte[2];Encoding coding=Encoding.Default;if (fs.Read(bytes, 0, 2) > 2){if (bytes == new byte[2] { 0xFF, 0xFE }) coding = Encoding.Unicode;if (bytes == new byte[2] { 0xFE, 0xFF }) coding = Encoding.BigEndianUnicode;if (bytes == new byte[2] { 0xEF, 0xBB }) coding = Encoding.UTF8;}fs.Close();//替换数据string text=File.ReadAllText(filename, coding);text=ReplaceText(text,search, replace, options);File.WriteAllText(filename, text, coding);return true;}/**//// <summary>/// 替换文本/// </summary>/// <param name="text"></param>/// <param name="search"></param>/// <param name="replace"></param>/// <param name="options"></param>/// <returns></returns>public static string ReplaceText(string text, string search, string replace, string options){RegexOptions 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 = %%1; //"WPCFile"keyValue = %%2; //"资源包文件"RegistryKey isExCommand = null;bool isCreateRegistry = true;try{/// 检查 文件关联是否创建isExCommand = Registry.ClassesRoot.OpenSubKey(keyName);if (isExCommand == null){isCreateRegistry = true;}else{if (isExCommand.GetValue("Create").ToString() == Application.ExecutablePath.ToString()){isCreateRegistry = false;}else{Registry.ClassesRoot.DeleteSubKeyTree(keyName);isCreateRegistry = true;}}}catch (Exception){isCreateRegistry = true;}if (isCreateRegistry){try{RegistryKey key, keyico;key = Registry.ClassesRoot.CreateSubKey(keyName);key.SetValue("Create", Application.ExecutablePath.ToString());keyico = key.CreateSubKey("DefaultIcon");keyico.SetValue("", Application.ExecutablePath + ",0");key.SetValue("", keyValue);key = key.CreateSubKey("Shell");key = key.CreateSubKey("Open");key = key.CreateSubKey("Command");key.SetValue("", "\"" + Application.ExecutablePath.ToString() + "\" \"%1\"");keyName = %%3; //".wpc"keyValue = %%1;key = Registry.ClassesRoot.CreateSubKey(keyName);key.SetValue("", keyValue);}catch (Exception){}}51.批量转换编码从GB2312到Unicode52.设置JDK环境变量/*JAVA_HOME=C:\j2sdk1.4.2_04CLASSPATH=.;C:\j2sdk1.4.2_04\lib\tools.jar;C:\j2sdk1.4.2_04\lib\dt.jar;C:\j2sdk1.4.2_04path=C:\j2sdk1.4.2_04\bin;*///using Microsoft.Win32;int isFileNum=0;int i=0;Environment.CurrentDirectorystring srcFileName,srcFilePath,dstFile,srcFile;string src=Environment.CurrentDirectory+"\\*.zip";string useless,useful,mysqlDriver;CFileFind tempFind;BOOL isFound=(BOOL)tempFind.FindFile(src);RegistryKey rkLocalM = Registry.CurrentUser; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfigconst 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.CurrentConfigrkSub = 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.CurrentConfigrkSub = 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);string destPath=string(crEnVar);destPath+="\\SendTo\\";// lasting("C:\\Sun\\Java\\eclipse\\eclipse.exe",destPath);string 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;string StrPath;RegJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;RegJavaHome.OpenKey("SOFTWARE\\JavaSoft\\Java Development Kit\\1.6");RegJavaHome.ReadString("JavaHome",StrPath);CRegEdit SysJavaHome;string 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);// string temp=destPath+"JBoss编译调试.cmd";string 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\SendToif(SUCCEEDED(SHGetFolderPath(NULL,CSIDL_SENDTO|CSIDL_FLAG_CREATE,NULL,0,szPath))){//printf(szPath);}string 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);string StrPath;CRegEdit SysJavaHome;string StrJavaHome;SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");CRegEdit RegHomePath;RegHomePath.m_RootKey=HKEY_CURRENT_USER;RegHomePath.OpenKey("Environment");RegHomePath.WriteString("RESIN_HOME",(LPCTSTR)srcFilePath); //D:\resin-3.2.0useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));useful=useless;SysJavaHome.WriteString("Path",(LPCTSTR)useful);Sleep(5000);}else if(srcFileName.Find("ant")>0){string StrPath;CRegEdit SysJavaHome;string StrJavaHome;SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");CRegEdit RegHomePath;RegHomePath.m_RootKey=HKEY_CURRENT_USER;RegHomePath.OpenKey("Environment");RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:\apache-ant-1.7.1\ PATH=%ANT_HOME%/binuseless.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);}}elsecontinue;}*/53.批量转换编码从Unicode到GB231254.删除空文件夹/*using System.IO;using System.Text.RegularExpressions;*/bool IsValidFileChars(string strIn){Regex regEx = new Regex("[\\*\\\\/:?<>|\"]");return !regEx.IsMatch("aj\\pg");}try{string path = %%1;if(!IsValidFileChars(path))throw new Exception("非法目录名!");if(!Directory.Exists(path))throw new Exception("本地目录路径不存在!");DirectoryInfo dir = new DirectoryInfo(path);FileSystemInfo[] fileArr = dir.GetFileSystemInfos();Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path));while (Folders.Count > 0){path = Folders.Dequeue();string[] dirs = Directory.GetDirectories(path);Directory.Delete(path);}foreach (string direct in dirs){Folders.Enqueue(direct);}catch (Exception ep){MessageBox.show(ep.ToString());}}55.GB2312文件转UTF-8格式/*using System.IO;using System.Text;*/File.WriteAllText(%%2, File.ReadAllText(%%1,Encoding.GetEncoding("GB2312")), Encoding.UTF8);56.UTF-8文件转GB2312格式/*using System.IO;using System.Text;*/File.WriteAllText(%%2, File.ReadAllText(%%1,Encoding.UTF8), Encoding.GetEncoding("GB2312"));57.获取文件路径的父路径//using System.IO;string %%2=Directory.GetParent(%%1);58.Unicode文件转UTF-8格式/*using System.IO;using System.Text;*/StreamReader srfile = new StreamReader(%%1, Encoding.Unicode);StreamWriter swfile = new StreamWriter(%%2, false, Encoding.UTF8);while ((String strLin = srfile.ReadLine()) != null){swfile.WriteLine(strLin);}srfile.Close();swfile.Close();59.CRC循环冗余校验//using System.Text;class CRCVerifyLHY{//dataStream数组中的dataStream[0]和dataStream[1]为CRC校验码的初始值,即0x0000。其他的数组元素即为要传输的信息码,cRC_16为生成多项式的简记式//以CRC16-CCITT为例进行说明,CRC校验码为16位,生成多项式17位,其简记式实际是0x11021,//但是生成多项式的最高位固定为1,故在简记式中忽略最高位1了,CRC16-CCITT的简记式就可以写为0x1021public static ushort GetCRC(byte[] dataStream, ushort cRC_16){ushort cRC_temp = Convert.ToUInt16((dataStream[dataStream.Length - 1] << 8) + dataStream[dataStream.Length - 2]);int totalBit = (dataStream.Length - 2) * 8;for (int i = totalBit - 1; i >= 0; i--){ushort a = Convert.ToUInt16(i / 8);ushort b = Convert.ToUInt16(i % 8);ushort nextBit = Convert.ToUInt16((dataStream[a] >> b) & 0x01);if (cRC_temp >= 32768){cRC_temp = Convert.ToUInt16(((cRC_temp - 32768) << 1) + nextBit);cRC_temp = Convert.ToUInt16(cRC_temp ^ cRC_16);}else{cRC_temp = Convert.ToUInt16((cRC_temp << 1) + nextBit);}}return cRC_temp;}}byte[] array = new byte[] { 0, 0, 157 };ushort cRC_Result = CRCVerifyLHY.GetCRC(array, 0x1021);Console.WriteLine(cRC_Result);Console.ReadKey();60.判断是否为空文件//using System.IO;StreamReader sr = new StreamReader(aFile);string str;while ((str = sr.ReadLine()) != null){str = str.Trim();if (str != null){sr.Close();//空白文件}}sr.Close();61.终止程序//using System.Diagnostics;Process[] killprocess = System.Diagnostics.Process.GetProcessesByName(%%1); //"calc"foreach (System.Diagnostics.Process p in killprocess){p.Kill();}62.定时关机/*using System.Diagnostics;using System.Management;using System.Runtime.InteropServices;[DllImport("kernel32.dll",ExactSpelling=true)]internal static extern IntPtr GetCurrentProcess();[DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]internal static extern bool OpenProcessToken( IntPtr h, int acc, ref IntPtr phtok );[DllImport("advapi32.dll", SetLastError=true) ]internal static extern bool LookupPrivilegeValue( string host, string name, ref long pluid );[DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]internal static extern bool AdjustTokenPrivileges( IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen );[DllImport("user32.dll", ExactSpelling=true, SetLastError=true) ]internal static extern bool ExitWindowsEx( int flg, int rea);internal const int SE_PRIVILEGE_ENABLED = 0x00000002;internal const int TOKEN_QUERY = 0x00000008;internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";//注销参数 中止进程,然后注销internal const int EWX_LOGOFF = 0x00000000;//重启参数 重新引导系统internal const int EWX_REBOOT = 0x00000002;//公用参数 强迫中止没有响应的进程internal const int EWX_FORCE = 0x00000004;//关机参数internal const int EWX_POWEROFF = 0x00000008;//此参数没有用到 关闭系统internal const int EWX_SHUTDOWN = 0x00000001;//此参数没有用到internal const int EWX_FORCEIFHUNG = 0x00000010;private int second = 0;*//// <summary>/// 主函数/// </summary>/// <param name="flg"></param>private static void DoExitWin( int flg ){//在进行操作之前关掉用户级别的进程。KillUserProcess();bool ok;TokPriv1Luid tp;IntPtr hproc = GetCurrentProcess();IntPtr htok = IntPtr.Zero;ok = OpenProcessToken( hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok );tp.Count = 1;tp.Luid = 0;tp.Attr = SE_PRIVILEGE_ENABLED;ok = LookupPrivilegeValue( null, SE_SHUTDOWN_NAME, ref tp.Luid );ok = AdjustTokenPrivileges( htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero );ok = ExitWindowsEx( flg, 0 );}/// <summary>/// 关机/// </summary>public static void PowerOff(){DoExitWin( EWX_FORCE | EWX_POWEROFF );}/// <summary>/// 注销/// </summary>public static void LogoOff(){DoExitWin ( EWX_FORCE | EWX_LOGOFF );}/// <summary>/// 重启/// </summary>public static void Reboot(){DoExitWin( EWX_FORCE | EWX_REBOOT );}/// <summary>/// 计时器/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void timer1_Tick(object sender, System.EventArgs e){if (second > 0){this.labelSecond.Text = GetTimeString( second ).ToString();second--;if( second == 0){//关机PowerOff() ;}}}[StructLayout(LayoutKind.Sequential, Pack=1)]internal struct TokPriv1Luid{public int Count;public long Luid;public int Attr;}/// <summary>/// 依据指定的秒数换算出等价的小时分钟和秒/// </summary>/// <param name="s"></param>/// <returns></returns>private string GetTimeString( int s ){//小时int lastHours = s/3600 ;//分钟int lastMinute = (s%3600)/60;//秒int lastSecond = (s%3600)%60;//用于显示的字符串string timeShow = "";timeShow = timeShow + "";if( lastHours == 0){//说明此种情况不够1小时if(lastMinute == 0){//说明此情况不足1分钟timeShow = timeShow + lastSecond +"秒";}else{timeShow = timeShow + lastMinute +"分钟 ";timeShow = timeShow + lastSecond +"秒";}}else{//说明超过1小时timeShow = timeShow + lastHours +"小时 ";timeShow = timeShow + lastMinute +"分钟 ";timeShow = timeShow + lastSecond +"秒";}return timeShow.ToString();}/// <summary>/// 关掉用户级别的进程/// </summary>private static void KillUserProcess(){//取得当前计算机的用户名称string computerName = System.Net.Dns.GetHostName();//依据计算机的名称取得当前运行的进程并保存于一个数组中Process []remoteAll = Process.GetProcesses( computerName );Process processTemp = new Process();SelectQuery query1 = new SelectQuery("Select * from Win32_Process");ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);string text1 = "";text1 += "当前运行进程总数:"+remoteAll.Length.ToString()+"\n";//进程次序int iCount = 0;try{foreach (ManagementObject disk in searcher1.Get()){ManagementBaseObject inPar = null;ManagementBaseObject outPar = null;inPar = disk.GetMethodParameters("GetOwner");outPar = disk.InvokeMethod("GetOwner", inPar,null);//依据ID号获取进程processTemp = Process.GetProcessById( Convert.ToInt32(disk["ProcessId"].ToString()));//如果是用户的进程就把该进程关掉if(outPar["Domain"] != null){if(outPar["Domain"].ToString().ToLower() == computerName ){// //去掉两个进程不能关掉if((processTemp.ProcessName.ToString().ToLower()!="explorer") && (processTemp.ProcessName.ToString().ToLower() !="ctfmon")&& (processTemp.ProcessName.ToString().ToLower() !="closemachine") ){processTemp.Kill();}}}// text1 += "进程" +(++iCount)+": ProcessName="+processTemp.ProcessName.ToString() + ",User="+outPar["User"]+",Domain="+outPar["Domain"]+"\n";}}catch (Exception ex){text1 = ex.Message;}// this.label1.Text = str;}//预定关机时间DateTime time1 = DateTime.Now;//预定关机时间的日期 年月日string time1Front = %%1; //time1.ToShortDateString()//预定关机时间的小时string time1Hour = %%2;//预定关机时间的分钟string time1Minute = %%3;string b = time1Front +" "+ time1Hour +":"+time1Minute;time1 = Convert.ToDateTime( b );//当前时间DateTime time2 = DateTime.Now;//求出两个时间差TimeSpan time3 = time1 - time2;//计算两个时间相错的描述string c = time3.TotalSeconds.ToString("#00");if( Convert.ToInt32( c ) <= 0){MessageBox.Show("请重新选择当前时间之后的时间为自动关机时间。");}second = Convert.ToInt32(c);63.显示进程列表//using System.Diagnostics;Process[] processes;processes = System.Diagnostics.Process.GetProcesses();Process process;for(int i = 0;i<processes.Length-1;i++){process = processes[i];//process.Id//process.ProcessName}64.遍历文件夹列出文件大小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(Path.DirectorySeparatorChar) == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + Path.DirectorySeparatorChar + Path.GetFileName(fileStr), (aa.Path.LastIndexOf(Path.DirectorySeparatorChar) == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + Path.DirectorySeparatorChar + Path.GetFileName(fileStr));DirectoryInfolistView.Clear();}66.对目标压缩文件解压缩到指定文件夹/*using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Collections;System.Design.dllusing 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(Path.DirectorySeparatorChar) == aa.Path.Length - 1) ? aa.Path : aa.Path + Path.DirectorySeparatorChar;string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));%%1 = (%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar;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(Path.DirectorySeparatorChar) == parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar, 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(@"C:\Program Files\Internet Explorer\iexplore.exe", %%1); //"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.获取磁盘所有分区,把结果放在数组drives中//using System.IO;DriveInfo[] drives = DriveInfo.GetDrives();71.激活一个程序或程序关联的文件//using System.Diagnostics;Process LandFileDivisison;LandFileDivisison = new System.Diagnostics.Process();LandFileDivisison.StartInfo.FileName = %%1;LandFileDivisison.Start();72.MP3播放/*using System.Runtime.InteropServices;public static uint SND_ASYNC = 0x0001; // play asynchronouslypublic static uint SND_FILENAME = 0x00020000; // name is file name[DllImport("winmm.dll")]public static extern int mciSendString(string m_strCmd, string m_strReceive, int m_v1, int m_v2);[DllImport("Kernel32", CharSet = CharSet.Auto)]static extern Int32 GetShortPathName(String path,StringBuilder shortPath, Int32 shortPathLength);*/string name = %%1StringBuilder shortpath=new StringBuilder(80);int result=GetShortPathName(name,shortpath,shortpath.Capacity);name=shortpath.ToString();mciSendString(@"close all",null,0,0);mciSendString(@"open "+name+" alias song",null,0,0); //打开mciSendString("play song",null,0,0); //播放73.WAV播放/*using System.Runtime.InteropServices;public static uint SND_ASYNC = 0x0001; // play asynchronouslypublic static uint SND_FILENAME = 0x00020000; // name is file name[DllImport("winmm.dll")]public static extern int mciSendString(string m_strCmd, string m_strReceive, int m_v1, int m_v2);[DllImport("Kernel32", CharSet = CharSet.Auto)]static extern Int32 GetShortPathName(String path,StringBuilder shortPath, Int32 shortPathLength);*/string name = %%1StringBuilder shortpath=new StringBuilder(80);int result=GetShortPathName(name,shortpath,shortpath.Capacity);name=shortpath.ToString();mciSendString(@"close all",null,0,0);mciSendString(@"open "+name+" alias song",null,0,0); //打开mciSendString("play song",null,0,0); //播放74.写图像到剪切板//using System.IO;Bitmap bm =new Bitmap(filename);Clipboard.SetDataObject(bm,true);75.从剪贴板复制图像到窗体if (Clipboard.ContainsImage()){this.pictureBox1.Image = Clipboard.GetImage();}剪贴板中的数据类型//using System.IO;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.删除文件夹下的所有文件且不删除文件夹下的文件夹//using System.IO;77.XML遍历结点属性值//using System.IO;78.Unicode文件转GB2312格式/*using System.IO;using System.Text;*/File.WriteAllText(%%2, File.ReadAllText(%%1,Encoding.Unicode), Encoding.GetEncoding("GB2312"));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 + Path.DirectorySeparatorChar + files2.Name + Path.DirectorySeparatorChar;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 + Path.DirectorySeparatorChar + 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(Path.DirectorySeparatorChar) + 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 + Path.DirectorySeparatorChar + 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(Path.DirectorySeparatorChar) + 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 + Path.DirectorySeparatorChar + 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.csusing 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.Defaultforeach(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.csusing 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.GB2312文件转Unicode格式/*using System.IO;using System.Text;*/File.WriteAllText(%%2, File.ReadAllText(%%1,Encoding.GetEncoding("GB2312")), Encoding.Unicode);82.Java程序打包/*using System.IO;using System.Collections;using System.Diagnostics;*/string path = %%1;path = (path.LastIndexOf(Path.DirectorySeparatorChar) == path.Length - 1) ? path : path + Path.DirectorySeparatorChar;FileInfo myFilePath = new FileInfo(path + "conf.txt");DirectoryInfo dir = new DirectoryInfo(path);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;foreach (FileSystemInfo fi in d.GetFileSystemInfos()){Folders.Enqueue(fi);}}else{if (f.Name.Substring(2).Contains('.')&& f.Name.Substring(f.Name.LastIndexOf('.'))== ".java"){className = f.Name.Substring(0,f.Name.LastIndexOf('.'));Stream resultFile = myFilePath.Open(FileMode.OpenOrCreate);StreamWriter myFile = new StreamWriter(resultFile);myFile.WriteLine("Main-Class:" + className);myFile.Flush();myFile.Close();resultFile.Close();LandFileDivisison = new System.Diagnostics.Process();LandFileDivisison.StartInfo.FileName = "javac "+ f.FullName+ " && jar cmf "+ myFilePath.FullName + " "+ className + ".jar " + className+ ".class";LandFileDivisison.Start();LandFileDivisison = new System.Diagnostics.Process();LandFileDivisison.StartInfo.FileName = "java -jar " + className;LandFileDivisison.Start();}}}dir = new DirectoryInfo(path);fileArr = dir.GetFileSystemInfos();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;foreach (FileSystemInfo fi in d.GetFileSystemInfos()){Folders.Enqueue(fi);}}else{if (f.Name.Substring(2).Contains('.')&& f.Name.Substring(f.Name.LastIndexOf('.'))== ".class")f.Delete();}}83.UTF-8文件转Unicode格式84.创建PDF文档85.创建Word文档/*添加引用->COM->Microsoft Word 11.0 Object Libraryusing Word;*///下面的例子中包括C#对Word文档的创建、插入表格、设置样式等操作://(例子中代码有些涉及数据信息部分被省略,重要是介绍一些C#操作word文档的方法)public string CreateWordFile(string CheckedInfo){string message = "";try{Object Nothing = System.Reflection.Missing.Value;Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录string name = "CNSI_" + DateTime.Now.ToShortString()+".doc";object filename = "C://CNSI//" + name; //文件保存路径//创建Word文档Word.Application WordApp = new Word.ApplicationClass();Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);//添加页眉WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距//移动焦点并换行object count = 14;object WdLine = Word.WdUnits.wdLine;//换一行;WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点WordApp.Selection.TypeParagraph();//插入段落//文档中创建表格Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);//设置表格样式newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleThickThinLargeGap;newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;newTable.Columns[1].Width = 100f;newTable.Columns[2].Width = 220f;newTable.Columns[3].Width = 105f;//填充表格内容newTable.Cell(1, 1).Range.Text = "产品详细信息表";newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体 软件开发网 www.mscto.com//合并单元格newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中//填充表格内容newTable.Cell(2, 1).Range.Text = "产品基本信息";newTable.Cell(2, 1).Range.Font.Color = Word.WdColor.wdColorDarkBlue;//设置单元格内字体颜色//合并单元格newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//填充表格内容newTable.Cell(3, 1).Range.Text = "品牌名称:";newTable.Cell(3, 2).Range.Text = BrandName;//纵向合并单元格newTable.Cell(3, 3).Select();//选中一行object moveUnit = Word.WdUnits.wdLine;object moveCount = 5;object moveExtend = Word.WdMovementType.wdExtend;WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);WordApp.Selection.Cells.Merge();//插入图片string FileName = Picture;//图片所在路径object LinkToFile = false;object SaveWithDocument = true;object Anchor = WordDoc.Application.Selection.Range;WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度//将图片设置为四周环绕型Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();s.WrapFormat.Type = Word.WdWrapType.wdWrapSquare;newTable.Cell(12, 1).Range.Text = "产品特殊属性";newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));//在表格中增加行WordDoc.Content.Tables[1].Rows.Add(ref Nothing);WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString();//“落款”WordDoc.Paragraphs.Last.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;//文件保存WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);message=name+"文档生成成功,以保存到C:CNSI下";}catch{message = "文件导出异常!";}return message;}86.快速高效的文件加密/*using System.IO;using System.Windows.Forms.Design;//加载System.Design.dll的.Net API*/private static int ka,kb,kc,kd;int[] a={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};int[] b={3,3,3,5,5,3,3,3,5,3,5,3,7,3,11,7,11,3,5,3,3,3,7,5,5,3,7,3,11,13,3};int[] c={3,5,7,5,7,11,13,19,17,29,19,31,17,41,11,19,13,47,29,53,59,67,29,41,43,71,31,73,23,23,101};int[] d={5,7,11,13,17,17,19,29,43,43,47,47,59,61,61,67,71,71,73,79,89,101,101,103,107,107,109,109,127,149,151};private static int niyuan(int m,int n){int a,b,c,d,t,yu,shang,mod;a=m;b=n;mod=a;c=0;d=1;while(b<0)b+=a;if(a%b==0 || b%2==0)return 0;while(b!=1){t=a%b;shang=a/b;a=b;b=t;yu=c-shang*d;c=d;d=yu;}if(yu<0)yu+=mod;return yu;}private static int GetDaysInMoths(int nMonths){return new DateTime(DateTime.Now.Year,nMonths).DaysInMonth;}private static void init(){DateTime t2=new DateTime(1979,9,23);DateTime t1=DateTime.Now;TimeSpan ts=t1-t2;Random rand=new Random(ts.Days*8-55);UInt32 r=rand.NextDouble()*(GetDaysInMonths(t2.Month)));ka=a[r];kb=b[r];kc=c[r];kd=d[r];}private class FolderDialog : FolderNameEditor{FolderNameEditor.FolderBrowser fDialog = newSystem.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 dlg = new FolderDialog();dlg.DisplayDialog();FolderDialog dlg2 = new FolderDialog();dlg.DisplayDialog();if(dlg.ShowDialog()==DialogResult.OK){if(Path.GetExtension(dlg.SelectedPath).ToLower()==".txt"){if(dlg2.ShowDialog()==DialogResult.OK ){init();}}else{if(dlg2.ShowDialog()==DialogResult.OK ){init();}}87.从CSV文件构造XML文档/*using System.IO;using System.Xml.Linq;using System.Net;using System.Text.RegularExpressions;*/string[] quotes=File.ReadLines(%%1);XElement stockQuotes=new XElement("Root",from quote in quoteslet fields=quote.Split(new char[]{',','-'},StringSplitOption.RemoveEmptyEntries)select new XElement("Company",fields[0].Trim()),new XElement("LastPrice",fields[2].Trim()),new XElement("Time",fields[1].Trim()),new XElement("HighToday",fields[3].Trim()),stockQuotes.Save(%%2);88.从XML文档生成CSV文件/*using System.IO;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml.Linq;*/XElement black=XElement.Load(%%1);string file=(from elem in black.Elements("Player")let statistics=elem.Element("Statistics")select string.Format("{0},{1},{2},{3}",(string)statistics.Attribute("Name"),(string)statistics.Element("AverageAmountLost"),(string)statistics.Element("AverageAmountWon"),Environment.NewLine)),Aggregate(new StringBuilder(),(builder,str)=>builder.Append(str),builder=>builder.ToString());FileInfo f = new FileInfo(%%2);StreamWriter w = f.CreateText();w.Write(file);w.Flush();w.Close();89.模拟键盘输入字符串//using System.Windows.Forms;SendKeys.SendWait(%%1);90.提取PDF文件中的文本xpdfpublic OpenFileDialog ofdlg = new OpenFileDialog();//打开文件对话框public string filename;public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){ofdlg.Filter = "pdf文件(*.pdf)|*.pdf";//选择pdf文件if (ofdlg.ShowDialog() == DialogResult.OK){filename = string.Format("{0}", ofdlg.FileName);}}//传送打开文件对话框中得到的filename来做为外部程序的参数来做转化private void button2_Click(object sender, EventArgs e){Process p = new Process();string path = "pdftotext.exe"; //进程启用外部程序//这个exe我放在debug文件夹下面p.StartInfo.FileName = path;p.StartInfo.Arguments = string.Format( filename + " -");//很怪异的一行//参数“-”表示可以得到输出流p.StartInfo.UseShellExecute = false;p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardError = true;p.StartInfo.CreateNoWindow = true;p.Start();string s = p.StandardOutput.ReadToEnd();//得到pdf文档中的文本内容textBox1.Text = s;p.Close();}}上面的程序运行后,如果是在Debug文件夹下的pdf文件就可以得到输出,可是如果在打开文件对话框中打开我桌面上的一个pdf如:@"d:\我的文档\test.pdf",输出就会是空,但是如果把上面那怪异的一行改为:C# codep.StartInfo.Arguments = string.Format( @"d:\我的文档\test.pdf" + " -");程序就又会得到输出。呵呵,谢谢楼上的兄台,下载的xpdf中xpdftotext.exe用到的配置文件xpdfrc需要手动配置,我如果把那些字体啊,什么的映射成绝对路径下的文件,就不会出现上面的问题,但是我把配置文件中的路径改成了相对路径,于是就出现了上面的问题了,看兄台能够很轻易的就运行成功,一定是做过很多代码的,这里还得劳烦兄台再给看一下,帮下忙,能遇到一个大神不容易,大神可不能吝啬啊,先谢过了哈91.操作内存映射文件/*using System.Runtime.InteropServices;[DllImport("kernel32.dll")]public static extern IntPtr CreateFileMapping(IntPtr hFile,IntPtr lpFileMappingAttributes, uint flProtect,uint dwMaximumSizeHigh,uint dwMaximumSizeLow, string lpName);[DllImport("kernel32.dll")]public static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uintdwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow,IntPtr dwNumberOfBytesToMap);[DllImport("kernel32.dll")]public static extern bool UnmapViewOfFile(IntPtr lpBaseAddress);[DllImport("kernel32.dll")]public static extern bool CloseHandle(IntPtr hObject);[DllImport("kernel32.dll")]public static extern IntPtr CreateFile(string lpFileName,int dwDesiredAccess, FileShare dwShareMode, IntPtr securityAttrs,FileMode dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile);[DllImport("kernel32.dll")]public static extern uint GetFileSize(IntPtr hFile, IntPtr lpFileSizeHigh);public const int GENERIC_READ = -2147483648; //0x80000000public const int GENERIC_WRITE = 0x40000000;public const int GENERIC_EXECUTE = 0x20000000;public const int GENERIC_ALL = 0x10000000;public const int FILE_ATTRIBUTE_NORMAL = 0x80;public const int FILE_FLAG_SEQUENTIAL_SCAN = 0x8000000;public const int INVALID_HANDLE_VALUE = -1;public const int PAGE_NOACCESS = 1;public const int PAGE_READONLY = 2;public const int PAGE_READWRITE = 4;public const int FILE_MAP_COPY = 1;public const int FILE_MAP_WRITE = 2;public const int FILE_MAP_READ = 4;*/IntPtr vFileHandle = CreateFile(@"c:\temp\temp.txt",GENERIC_READ | GENERIC_WRITE, FileShare.Read | FileShare.Write,IntPtr.Zero, FileMode.Open,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero);if (INVALID_HANDLE_VALUE != (int)vFileHandle){IntPtr vMappingHandle = CreateFileMapping(vFileHandle, IntPtr.Zero, PAGE_READWRITE, 0, 0, "~MappingTemp");if (vMappingHandle != IntPtr.Zero){IntPtr vHead = MapViewOfFile(vMappingHandle,FILE_MAP_COPY | FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, IntPtr.Zero);if (vHead != IntPtr.Zero){uint vSize = GetFileSize(vFileHandle, IntPtr.Zero);for (int i = 0; i <= vSize / 2; i++){byte vTemp = Marshal.ReadByte((IntPtr)((int)vHead + i));Marshal.WriteByte((IntPtr)((int)vHead + i),Marshal.ReadByte((IntPtr)((int)vHead + vSize - i - 1)));Marshal.WriteByte((IntPtr)((int)vHead + vSize - i - 1), vTemp);}UnmapViewOfFile(vHead);}CloseHandle(vMappingHandle);}CloseHandle(vFileHandle);}92.重定向windows控制台程序的输出信息//using System.Diagnostics;delegate void dReadLine(string strLine);private void excuteCommand(string strFile, string args, dReadLine onReadLine){System.Diagnostics.Process p = new Process();p.StartInfo = new System.Diagnostics.ProcessStartInfo();p.StartInfo.FileName = strFile;p.StartInfo.Arguments = args;p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;p.StartInfo.RedirectStandardOutput = true;p.StartInfo.UseShellExecute = false;p.StartInfo.CreateNoWindow = true;p.Start();System.IO.StreamReader reader = p.StandardOutput;//截取输出流string line = reader.ReadLine();//每次读取一行while (!reader.EndOfStream){onReadLine(line);line = reader.ReadLine();}p.WaitForExit();}private void PrintMessage(string strLine){%%2 += strLine + " ";}excuteCommand("cmd", " "+%%1, new dReadLine(PrintMessage));//先读取文本中的命令假设为strCommandstring strCommand="ipconfig";string strRst=string.Empty;Process p = new Process();p.StartInfo.FileName = "cmd.exe";p.StartInfo.Arguments = "/c " + strCommand;p.StartInfo.UseShellExecute = false;//重定向标准输入//p.StartInfo.RedirectStandardInput = false;//重定向标准输出p.StartInfo.RedirectStandardOutput = true;//重定向错误输出p.StartInfo.RedirectStandardError = false;//设置不显示窗口p.StartInfo.CreateNoWindow = true;try{//启动进程p.Start();//停止3秒钟Thread.Sleep(3000);//如果进程结束//或者你可以等到结束再获取if (p.HasExited){//从输出流获取执行结果strRst = p.StandardOutput.ReadToEnd();}else{p.Kill();}}catch (Exception ex){strRst = "";}finally{p.Close();}//strRst即为运行后的结果,再将他写入另一个文本93.序列化using System.Collections;using System.Text;namespace SerializableTest{[Serializable]public class Book{public Book(){alBookReader = new ArrayList();}public string strBookName;[NonSerialized]public string strBookPwd;private string _bookID;public string BookID{get { return _bookID; }set { _bookID = value; }}public ArrayList alBookReader;private string _bookPrice;public void SetBookPrice(string price){_bookPrice = price;}public void Write(){Console.WriteLine("Book ID:" + BookID);Console.WriteLine("Book Name:" + strBookName);Console.WriteLine("Book Password:" + strBookPwd);Console.WriteLine("Book Price:" + _bookPrice);Console.WriteLine("Book Reader:");for (int i = 0; i < alBookReader.Count; i++){Console.WriteLine(alBookReader[i]);}}}}using (FileStream fs = new FileStream(strFile, FileMode.Create)){Book book = new Book();book.BookID = "1";book.alBookReader.Add("gspring");book.alBookReader.Add("永春");book.strBookName = "C#强化";book.strBookPwd = "*****";book.SetBookPrice("50.00");BinarySerialize serialize = new BinarySerialize();serialize.Serialize(book);}94.反序列化using System.Collections;using System.Text;namespace SerializableTest{[Serializable]public class Book{public Book(){alBookReader = new ArrayList();}public string strBookName;[NonSerialized]public string strBookPwd;private string _bookID;public string BookID{get { return _bookID; }set { _bookID = value; }}public ArrayList alBookReader;private string _bookPrice;public void SetBookPrice(string price){_bookPrice = price;}public void Write(){Console.WriteLine("Book ID:" + BookID);Console.WriteLine("Book Name:" + strBookName);Console.WriteLine("Book Password:" + strBookPwd);Console.WriteLine("Book Price:" + _bookPrice);Console.WriteLine("Book Reader:");for (int i = 0; i < alBookReader.Count; i++){Console.WriteLine(alBookReader[i]);}}}}Book book;using (FileStream fs = new FileStream(strFile, FileMode.Open)){BinaryFormatter formatter = new BinaryFormatter();book = (Book)formatter.Deserialize(fs);}return book;95.报表相关/*using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Shared;*/2、水晶报表的两种格式1)pull模式,不利用DataSet,直接从数据库中取出数据2) push模式,使用DataSet,利用它进行数据的加载和处理等3. 水晶报表使用的库1)水晶报表的引擎(CREnging.dll),作用:合并数据,装换格式2)水晶报表设计器(CRDesigner.dll),作用:设计标题,插入数据等3)水晶报表查看控件(CRWebFormViewer.DLL)4)需要引入的命名空间using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Shared;4、Pull模式下使用水晶报表1)创建rpt文件2)拖放CrystalReportViewer3)绑定5、读取水晶报表文件private void ReadCRV(cryatalReportViewer crv){openFileDialog dlg=new OpenFileDialog();dlg.Title="打开水晶报表文件";dlg.Filter="水晶报表文件(*.rpt)|*.rpt|所有文件|*.*";if(dlg.showDialog()==DialogResult.OK){crv.ReportSource=dlg.FileName;}}6. B/S下读取报表的文件private void ReadCRV(cryatalReportViewer crv,File file){string strName=file.PostedFile.FileName;if(strName.Trim()!=""){crv.ReportSource=strNameSession["fileName"]=strName;}}在B/S中要防止数据源的丢失priavte void Page_Load(object sender,System.EventArgs e){if(Session["fileName"]!=null){crv.ReportSource=Session["fileName"].ToString();}}7. 假如直接从数据库中读取数据,采用PULL模式可能出现错误(登录的用户名和密码不对)private void ReadCRV(CrystalReportViewer crv,CrystalReport cr){ReportDocument reportDoc=new ReportDocument();reportDoc.Load(Server.MapPath(cr));//要加载的rpt文件的名字//解决登录的问题TableLogOnInfo logonInfo = new TableLogOnInfo();foreach(Table tb in ReportDoc.Database.Tables){logonInfo=tb.LogOnInfo;logonInfo.ConnectionInfo.ServerName="(loacl)";logonInfo.ConnectionInfo.DatabaseName="Pubs";logonInfo.ConnectionInfo.UserId="sa";logonInfo.ConnectionInfo.Password="";tb.ApplyLogOnInfo(logonInfo);}crv.ReportSource=reportDoc;}8. 采用Push模式,直接在数据源读取private void BindReport(CrystalReportViewer crv){string strProvider="Server=(local);DataBase=pubs;uid=sa;pwd=";CrystalReport cr=new CrystalReport();DataSet ds=new DataSet();SqlConnection conn=new SqlConnection(strProvider);conn.open();string strSql="select * from jobs";SqlDataAdapter dap=new SqlDataAdapter(strSql,conn);adp.Fill(ds,"jobs");cr.SetDataSource(ds);crv.ReportSource=cr;}9. 导出水晶报表的文件private void ExportCrv(CrystalReport cr){DiskFileDestionOptions dOpt=new DiskFileDestionOptions();cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile();cr.ExportOptions.ExportFormatType= ExportFormatType.PortableDocFormat;dOpt.DiskFileName="C:\output.pdf";cr.ExportOptions.DestinationOptions=dOpt;cr.Export();}private void ExportCrv(CrystalReport cr,string strType,string strPath){DiskFileDestionOptions dOpt=new DiskFileDestionOptions();cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile();switch(strType){case "RTF":cr.ExportOptions.ExportFormatType=ExportFormatType.RichText;dOpt.DiskFileName=strPath;break;case "PDF":cr.ExportOptions.ExportFormatType=ExportFormatType.PortableDocFormat;dOpt.DiskFileName=strPath;break;case "DOC":cr.ExportOptions.ExportFormatType=ExportFormatType.WordForWindows;dOpt.DiskFileName=strPath;break;case "XLS":cr.ExportOptions.ExportFormatType=ExportFormatType.Excel;dOpt.DiskFileName=strPath;break;default;break;}cr.ExportOptions.DestinationOptions=dOpt;cr.Export();}10 B/S下水晶报表的打印priavte void PrintCRV(CrystalReport cr){string strPrinterName=@"printName";PageMargins margins=cr.PrintOptions.PageMargins;margins.bottomMargin = 250;margins.leftMargin = 350;margins.rightMargin = 350;margins.topMargin = 450;cr.PrintOptions.ApplyPageMargins(margins);cr.PrintOptions.printerName=strPrinterName;cr.PrintToPrinter(1,false,0,0)//参数设置为0,表示打印所用页}96.全屏幕截取/*using System.Drawing.Drawing2D;using System.Runtime.InteropServices;using System.Collections;using System.Drawing.Imaging;using System.Threading;*/[DllImport("gdi32.dll")]private static extern int BitBlt(IntPtr hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,IntPtr hdcSrc,int nXSrc,int nYSrc,UInt32 dwRop);//this.Hide();//如果你不想截取的图象中有此应用程序//Thread.Sleep(1000);Rectangle rect = new Rectangle();rect = Screen.GetWorkingArea(this);//获得当前屏幕的大小Graphics g = this.CreateGraphics();//创建一个以当前屏幕为模板的图象Image myimage = new Bitmap(rect.Width, rect.Height, g);//第二种得到全屏坐标的方法// Image myimage = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height,g);//创建以屏幕大小为标准的位图Graphics gg = Graphics.FromImage(myimage);IntPtr dc = g.GetHdc();//得到屏幕的DCIntPtr dcdc = gg.GetHdc();//得到Bitmap的DCBitBlt(dcdc, 0, 0, rect.Width, rect.Height, dc, 0, 0, 13369376);//调用此API函数,实现屏幕捕获g.ReleaseHdc(dc);//释放掉屏幕的DCgg.ReleaseHdc(dcdc);//释放掉Bitmap的DCmyimage.Save(Application.StartupPath + @"\bob.jpg", ImageFormat.Jpeg);//以JPG文件格式来保存this.Show();97.区域截屏/*using System.Drawing.Drawing2D;using System.Runtime.InteropServices;using System.Collections;using System.Drawing.Imaging;using System.Threading;[DllImport("gdi32.dll")]public static extern IntPtr CreateDC(string lpszDriver, // driver namestring lpszDevice, // device namestring lpszOutput, // not used; should be NULLInt64 lpInitData // optional printer data);[DllImport("gdi32.dll")]public static extern IntPtr CreateCompatibleDC(IntPtr hdc // handle to DC);[DllImport("gdi32.dll")]public static extern int GetDeviceCaps(IntPtr hdc, // handle to DCGetDeviceCapsIndex nIndex // index of capability);[DllImport("gdi32.dll")]public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, // handle to DCint nWidth, // width of bitmap, in pixelsint nHeight // height of bitmap, in pixels);[DllImport("gdi32.dll")]public static extern IntPtr SelectObject(IntPtr hdc, // handle to DCIntPtr hgdiobj // handle to object);[DllImport("gdi32.dll")]public static extern int BitBlt(IntPtr hdcDest, // handle to destination DCint nXDest, // x-coord of destination upper-left cornerint nYDest, // y-coord of destination upper-left cornerint nWidth, // width of destination rectangleint nHeight, // height of destination rectangleIntPtr hdcSrc, // handle to source DCint nXSrc, // x-coordinate of source upper-left cornerint nYSrc, // y-coordinate of source upper-left cornerUInt32 dwRop // raster operation code);[DllImport("gdi32.dll")]public static extern int DeleteDC(IntPtr hdc // handle to DC);*/public static Bitmap GetPartScreen(Point P1,Point P2,bool Full){IntPtr hscrdc,hmemdc;IntPtr hbitmap,holdbitmap;int nx,ny,nx2,ny2;nx=ny=nx2=ny2=0;int nwidth, nheight;int xscrn, yscrn;hscrdc = CreateDC("DISPLAY", null, null, 0);//创建DC句柄hmemdc = CreateCompatibleDC(hscrdc);//创建一个内存DCxscrn = GetDeviceCaps(hscrdc, GetDeviceCapsIndex.HORZRES);//获取屏幕宽度yscrn = GetDeviceCaps(hscrdc, GetDeviceCapsIndex.VERTRES);//获取屏幕高度if(Full)//如果是截取整个屏幕{nx = 0;ny = 0;nx2 = xscrn;ny2 = yscrn;}else{nx = P1.X;ny = P1.Y;nx2 =P2.X;ny2 =P2.Y;//检查数值合法性if(nx<0)nx = 0;if(ny<0)ny = 0;if(nx2>xscrn)nx2 = xscrn;if(ny2>yscrn)ny2 = yscrn;}nwidth = nx2 - nx;//截取范围的宽度nheight = ny2 - ny;//截取范围的高度hbitmap = CreateCompatibleBitmap(hscrdc, nwidth, nheight);//从内存DC复制到hbitmap句柄holdbitmap = SelectObject(hmemdc, hbitmap);BitBlt(hmemdc, 0, 0, nwidth, nheight,hscrdc, nx, ny,(UInt32)0xcc0020);hbitmap = SelectObject(hmemdc, holdbitmap);DeleteDC(hscrdc);//删除用过的对象DeleteDC(hmemdc);//删除用过的对象return Bitmap.FromHbitmap(hbitmap);//用Bitmap.FromHbitmap从hbitmap返回Bitmap}98.计算文件MD5值/*using System.IO;using System.Security.Cryptography;*/string path = %%1;FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read);MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();byte [] md5byte = md5.ComputeHash(fs);int i,j;StringBuilder sb = new StringBuilder(16);foreach (byte b in md5byte){i = Convert.ToInt32(b);j = i >> 4;sb.Append(Convert.ToString(j,16));j = ((i << 4) & 0x00ff) >> 4;sb.Append(Convert.ToString(j,16));}string %%2=sb.ToString();99.计算获取文件夹中文件的MD5值/*using System.IO;using System.Security.Cryptography;using System.Collections;*/bool b=false;string path = (%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2 + Path.DirectorySeparatorChar;string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar);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 (b && f == null){DirectoryInfo d = tmp as DirectoryInfo;Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar) == parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar, path));foreach (FileSystemInfo fi in d.GetFileSystemInfos()){Folders.Enqueue(fi);}}else{FileStream fs = new FileStream(f,FileMode.Open,FileAccess.Read);MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();byte [] md5byte = md5.ComputeHash(fs);int i,j;StringBuilder sb = new StringBuilder(16);foreach (byte b in md5byte){i = Convert.ToInt32(b);j = i >> 4;sb.Append(Convert.ToString(j,16));j = ((i << 4) & 0x00ff) >> 4;sb.Append(Convert.ToString(j,16));}string %%3=sb.ToString();}}100.复制一个目录下所有文件到一个文件夹中/*using System.IO;using System.Collections;*/string path = (%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2+Path.DirectorySeparatorChar;string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar);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;foreach (FileSystemInfo fi in d.GetFileSystemInfos()){Folders.Enqueue(fi);}}else{f.CopyTo(path+f.Name);}}101.移动一个目录下所有文件到一个文件夹中/*using System.IO;using System.Collections;*/string path = (%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2+Path.DirectorySeparatorChar;string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar);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;foreach (FileSystemInfo fi in d.GetFileSystemInfos()){Folders.Enqueue(fi);}}else{f.MoveTo(path+f.Name);}}102.文件RSA高级加密/*using System.IO;using System.Security.Cryptography;private RSACryptoServiceProvider _rsa;*/FileStream fin=new FileStream(%%1,FileMode.Open,FileAccess.Read);FileStream fout=new FileStream(%%2,FileMode.OpenOrCreate,FileAccess.Write);byte[] readBuffer=new byte[128];fin.Read(readBuffer,0,readBuffer.Length);byte[] encryptedBuffer=_rsa.Encrypt(readBuffer,true);_rsa.Clear();103.计算文件大小/*using System.IO;private const long KB=1024;private const long MB=1024*KB;private const long GB=1024*MB;*/FileInfo fi = new FileInfo(%%1);long filesize= fi.Length;string showsize;if(filesize>=GB)showsize.format("%0.2f GB",(double)filesize/GB);else if(filesize>=MB)showsize.format("%0.2f MB",(double)filesize/MB);else if(filesize>=KB)showsize.format("%0.2f KB",(double)filesize/KB);else if(filesize>1)showsize.format("%ld Bytes",filesize);elseshowsize="1 Byte";string %%2=showsize;104.计算文件夹的大小/*using System.IO;private const long KB=1024;private const long MB=1024*KB;private const long GB=1024*MB;*/private static long FolderFileSize(string path){long size = 0;try{FileInfo [] files = (new DirectoryInfo(path)).GetFiles();foreach(FileInfo file in files){size += file.Length;}}catch(Exception ex){MessageBox.Show(ex.Message);}return size;}private static long FolderSize(string path){long Fsize = 0;try{Fsize = FolderFileSize(path);DirectoryInfo [] folders = (new DirectoryInfo(path)).GetDirectories();foreach(DirectoryInfo folder in folders)Fsize += FolderSize(folder.FullName);}catch(Exception ex){MessageBox.Show(ex.Message);}return Fsize;}long filesize= FolderSize(%%1);string showsize;if(filesize>=GB)showsize.format("%0.2f GB",(double)filesize/GB);else if(filesize>=MB)showsize.format("%0.2f MB",(double)filesize/MB);else if(filesize>=KB)showsize.format("%0.2f KB",(double)filesize/KB);else if(filesize>1)showsize.format("%ld Bytes",filesize);elseshowsize="1 Byte";string %%2=showsize;105.快速获得当前程序的驱动器、路径、文件名和扩展名//using System.IO;DirectoryInfo dires= new DirectoryInfo(Application.StartupPath);string strQDQ = null;//驱动器strQDQ = dires.Root.ToString();string strPath =Application.ExecutablePath;//路径string FName = null;//文件名string FNameExt = null;//扩展名FileInfo FileIno = new FileInfo(strPath);FName = FileIno.Name;FNameExt = FileIno.Extension;106.磁盘剩余空间计算/*using System.Runtime.InteropServices;//第一种[DllImport("kernel32")]public static extern bool GetDiskFreeSpaceEx(string Path,out longbytesAvail, out long bytesOnDisk, out long freeBytesOnDisk);long bytesAvail, bytesOnDisk,freeBytesOnDisk,lpTotalNumberOfClusters;//lpRootPathName String,不包括卷名的一个磁盘根路径//lpSectorsPerCluster Long,用于装载一个簇内扇区数的变量//lpBytesPerSector Long,用于装载一个扇区内字节数的变量//lpNumberOfFreeClusters Long,用于装载磁盘上剩余簇数的变量//lpTtoalNumberOfClusters Long,用于装载磁盘上总簇数的变量*/string tempImagePath = Application.StartupPath;//取出应用安装的目录。GetDiskFreeSpaceEx(tempImagePath, out bytesAvail, out bytesOnDisk, out freeBytesOnDisk);textBox1.Text = (freeBytesOnDisk/1024/1024).ToString();//第二种 引用System.Management//using System.Management;ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");ManagementObjectCollection disks=diskClass.GetInstances();System.UInt64 space=UInt64.MinValue;foreach(ManagementObject disk in disks){if((disk["Name"]).ToString() == "C:")space = (System.UInt64)(disk["FreeSpace"]);}//第三种 framework 中已经有类了, 不需要调用 API//using System.IO;long x = new DriveInfo(%%1).AvailableFreeSpace; //"C"string showsize;if (x >= GB)showsize.format("%0.2f GB", (double)x / GB);else if (x >= MB)showsize.format("%0.2f MB", (double)x / MB);else if (x >= KB)showsize.format("%0.2f KB", (double)x / KB);else if (x > 1)showsize.format("%ld Bytes", x);elseshowsize = "1 Byte";return showsize;107.获取当前程序进程ID//using System.Diagnostics;int %%1 = Process.GetCurrentProcess().Id;108.全盘搜索文件/*using System.Text;using System.IO;*/string strFileName;public string StrFileName{get { return strFileName; }set { strFileName = value; }}delegate void Temp(string fileName);delegate void ShowProgressDelegate(string fileName, string filePath, IList<IlsitFileFindModleClass> objIlist);IList<IlsitFileFindModleClass> objIlist;public void GetFoldersPath(){if (GridSearch.InvokeRequired == false){}else{objIlist = new List<IlsitFileFindModleClass>();string retStr = null;DriveInfo[] allDrives = DriveInfo.GetDrives();//检索计算机上的所有逻辑驱动器的驱动器名称foreach (DriveInfo driPath in allDrives){//循环输出各分区的信息FileSeach(driPath.Name);}}}public void GetFoldersPath(string root){if (GridSearch.InvokeRequired == false) { }else { objIlist = new List<IlsitFileFindModleClass>(); FileSeach(root); }}public void FileSeach(string root){string strFileNameTemp = StrFileName;Stack<string> dirs = new Stack<string>(20);if (!System.IO.Directory.Exists(root))return;dirs.Push(root);while (dirs.Count > 0){string currentDir = dirs.Pop();string[] subDirs;try{subDirs = System.IO.Directory.GetDirectories(currentDir);}catch (UnauthorizedAccessException e) { continue; }catch (System.IO.DirectoryNotFoundException e) { continue; }Temp temp=new Temp(Testll);label2.Invoke(temp, new object[] { currentDir });try{string[] filesTemp = System.IO.Directory.GetFiles(currentDir, StrFileName + ".*");if (filesTemp.Length > 0){objIlist.Add(new IlsitFileFindModleClass(strFileNameTemp, currentDir + "\\" + strFileNameTemp + ".*"));ShowProgressDelegate objTemp = new ShowProgressDelegate(test);BeginInvoke(objTemp, new object[] { strFileNameTemp, currentDir + "\\" + strFileNameTemp + ".*", objIlist });continue;}}catch (UnauthorizedAccessException e) { continue; }catch (System.IO.DirectoryNotFoundException e) { continue; }foreach (string str in subDirs)dirs.Push(str);}}StrFileName =%%1;MethodInvoker mi = new MethodInvoker(GetFoldersPath);mi.BeginInvoke(null, null);

0 0