1.创建文件夹//using System.IO;Directory.CreateDirectory(%%1);
2.创建文件//using System.IO;File.Create(%%1);
3.删除文件//using System.IO;File.Delete(%%1);
4.删除文件夹//using System.IO;Directory.Delete(%%1);
5.删除一个目录下所有的文件夹//using System.IO;foreach (string dirStr in Directory.GetDirectories(%%1)){ DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } }}
6.清空文件夹//using System.IO;Directory.Delete(%%1,true);Directory.CreateDirectory(%%1);
7.读取文件//using System.IO;StreamReader s = File.OpenText(%%1);string %%2 = null;while ((%%2 = s.ReadLine()) != null){ %%3}s.Close();
8.写入文件//using System.IO;FileInfo f = new FileInfo(%%1);StreamWriter w = f.CreateText();w.WriteLine(%%2);w.Close();
9.写入随机文件//using System.IO;byte[] dataArray = new byte[100000];//new Random().NextBytes(dataArray);using(FileStream FileStream = new FileStream(%%1, FileMode.Create)){// Write the data to the file, byte by byte. for(int i = 0; i < dataArray.Length; i++){ FileStream.WriteByte(dataArray[i]); }// Set the stream position to the beginning of the file. FileStream.Seek(0, SeekOrigin.Begin);// Read and verify the data. for(int i = 0; i < FileStream.Length; i++){ if(dataArray[i] != FileStream.ReadByte()){ //写入数据错误 return; } }//"数据流"+FileStream.Name+"已验证"}
10.读取文件属性//using System.IO;FileInfo f = new FileInfo(%%1);//f.CreationTime,f.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("\\") == %%2.Length - 1) ? %%2 : %%2+"\\";string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\");FileSystemInfo[] fileArr = dir.GetFileSystemInfos();Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());while (Folders.Count>0){ FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.CopyTo(f.FullName.Replace(parent, path)); }}
14.复制目录下所有的文件夹到另一个文件夹下/*using System.IO;using System.Collections;*/DirectoryInfo d = new DirectoryInfo(%%1);foreach (DirectoryInfo dirs in d.GetDirectories()){ Queue<FileSystemInfo> al = new Queue<FileSystemInfo>(dirs.GetFileSystemInfos()); while (al.Count > 0) { FileSystemInfo temp = al.Dequeue(); FileInfo file = temp as FileInfo; if (file == null) { DirectoryInfo directory = temp as DirectoryInfo; Directory.CreateDirectory(path + directory.Name); foreach (FileSystemInfo fsi in directory.GetFileSystemInfos()) al.Enqueue(fsi); } else File.Copy(file.FullName, path + file.Name); }}
15.移动文件夹/*using System.IO;using System.Collections;*/ string filename = Path.GetFileName(%%1); string path=(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\"; if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2)) Directory.Move(%%1, path + filename); else { string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, path)); } } Directory.Delete(%%1, true); }
16.移动目录下所有的文件夹到另一个目录下/*using System.IO;using System.Collections;*/string filename = Path.GetFileName(%%1); if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2)) foreach (string dir in Directory.GetDirectories(%%1)) Directory.Move(dir, Path.Combine(%%2,filename)); else { foreach (string dir2 in Directory.GetDirectories(%%1)) { string parent = Path.GetDirectoryName(dir2); Directory.CreateDirectory(Path.Combine(%%2, Path.GetFileName(dir2))); string dir = (dir2.LastIndexOf("\\") == dir2.Length - 1) ? dir2 : dir2 + "\\"; DirectoryInfo dirdir = new DirectoryInfo(dir); FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", %%2)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, %%2)); } } dirdir.Delete(true); } }
17.以一个文件夹的框架在另一个目录创建文件夹和空文件/*using System.IO;using System.Collections;*/bool b=false;string path = (%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\";string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\");FileSystemInfo[] fileArr = dir.GetFileSystemInfos();Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());while (Folders.Count > 0){ FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { if(b) File.Create(f.FullName.Replace(parent, path)); }}
18.复制文件//using System.IO;File.Copy(%%1,%%2);
19.复制一个文件夹下所有的文件到另一个目录//using System.IO;foreach (string fileStr in Directory.GetFiles(%%1)) File.Copy((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "\\"+Path.GetFileName(fileStr),(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "\\"+Path.GetFileName(fileStr));
20.提取扩展名//using System.IO;string %%2=Path.GetExtension(%%1);
21.提取文件名//using System.IO;string %%2=Path.GetFileName(%%1);
22.提取文件路径//using System.IO;string %%2=Path.GetDirectoryName(%%1);
23.替换扩展名//using System.IO;File.ChangeExtension(%%1,%%2);
24.追加路径//using System.IO;string %%3=Path.Combine(%%1,%%2);
25.移动文件//using System.IO;File.Move(%%1,%%2+"\\"+file.getname(%%1));
26.移动一个文件夹下所有文件到另一个目录foreach (string fileStr in Directory.GetFiles(%%1)) File.Move((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "\\"+Path.GetFileName(fileStr),(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "\\"+Path.GetFileName(fileStr));
27.指定目录下搜索文件/*using System.Text;using System.IO;*/string fileName=%%1;string dirName=%%2; DirectoryInfo dirc=new DirectoryInfo(dirName); foreach(FileInfo file in dirc.GetFiles()) { if(file.Name.IndexOf(fileName)>-1) return file.FullName; } foreach(DirectoryInfo dir in dirc.GetDirectories()) { return GetFile(fileName,dir.FullName); } return "找不到指定的文件"; }
28.打开对话框OpenFileDialog openFileDialog=new OpenFileDialog(); openFileDialog.InitialDirectory=\"c:\\\\\";//注意这里写路径时要用c:\\\\而不是c:\\ openFileDialog.Filter=\"文本文件|*.*|C#文件|*.cs|所有文件|*.*\"; openFileDialog.RestoreDirectory=true; openFileDialog.FilterIndex=1; if (openFileDialog.ShowDialog()==DialogResult.OK) { fName=openFileDialog.FileName; File fileOpen=new File(fName); isFileHaveName=true; %%1=fileOpen.ReadFile(); %%1.AppendText(\"\"); }
29.文件分割//using System.IO;FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);byte[] btArr = new byte[fsr.Length];fsr.Read(btArr, 0, btArr.Length);fsr.Close();string strFileName=%%1.Substring(%%1.LastIndexOf("\\")+1);FileStream fsw = new FileStream(%%2 + strFileName + "1", FileMode.Create, FileAccess.Write);fsw.Write(btArr, 0, btArr.Length/2);fsw.Close();fsw = new FileStream(%%2 + strFileName + "2", FileMode.Create, FileAccess.Write);fsw.Write(btArr, btArr.Length/2, btArr.Length-btArr.Length/2);fsw.Close();
30.文件合并//using System.IO;string strFileName = %%1.Substring(%%1.LastIndexOf("\\") + 1);FileStream fsr1 = new FileStream(%%2 + strFileName + "1", FileMode.Open, FileAccess.Read);FileStream fsr2 = new FileStream(%%2 + strFileName + "2", FileMode.Open, FileAccess.Read);byte[] btArr = new byte[fsr1.Length+fsr2.Length];fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));fsr2.Read(btArr, Convert.ToInt32(fsr1.Length), Convert.ToInt32(fsr2.Length));fsr1.Close();fsr2.Close();FileStream fsw = new FileStream(%%2 + strFileName, FileMode.Create, FileAccess.Write);fsw.Write(btArr, 0, btArr.Length);fsw.Close();
31.文件简单加密//using System.IO;//读文件FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);byte[] btArr = new byte[fsr.Length];fsr.Read(btArr, 0, btArr.Length);fsr.Close(); for (int i = 0; i < btArr.Length; i++){ //加密 int ibt = btArr[i]; ibt += 100; ibt %= 256; btArr[i] = Convert.ToByte(ibt);}//写文件string strFileName = Path.GetExtension(%%1);FileStream fsw = new FileStream(%%2+"/" + "enc_" + strFileName, FileMode.Create, FileAccess.Write); fsw.Write(btArr, 0, btArr.Length); fsw.Close();
32.文件简单解密//using System.IO;FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);byte[] btArr = new byte[fsr.Length];fsr.Read(btArr, 0, btArr.Length);fsr.Close();for (int i = 0; i < btArr.Length; i++){ //解密 int ibt = btArr[i]; ibt -= 100; ibt += 256; ibt %= 256; btArr[i] = Convert.ToByte(ibt);}//写文件string strFileName = Path.GetExtension(%%1);FileStream fsw = new FileStream(%%2 +"/" + strFileName, FileMode.Create, FileAccess.Write);fsw.Write(btArr, 0, btArr.Length);fsw.Close();
33.读取ini文件属性//using System.Runtime.InteropServices;//[DllImport("kernel32")]//返回取得字符串缓冲区的长度//private static extern long GetPrivateProfileString(string section,string key, string def,StringBuilder retVal,int size,string filePath);string Section=%%1;string Key=%%2;string NoText=%%3;string iniFilePath="Setup.ini";string %%4=String.Empty; if(File.Exists(iniFilePath)){ StringBuilder temp = new StringBuilder(1024); GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath); %%4=temp.ToString(); }
34.合并一个目录下所有的文件//using System.IO;FileStream fsw = new FileStream(%%2, FileMode.Create, FileAccess.Write);foreach (string fileStr in Directory.GetFiles(%%1)){FileStream fsr1 = new FileStream(fileStr, FileMode.Open, FileAccess.Read);byte[] btArr = new byte[fsr1.Length];fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));fsr1.Close();fsw.Write(btArr, 0, btArr.Length);}fsw.Close();
35.写入ini文件属性//using System.Runtime.InteropServices;//[DllImport("kernel32")]//返回0表示失败,非0为成功//private static extern long WritePrivateProfileString(string section,string key, string val,string filePath);string Section=%%1;string Key=%%2;string Value=%%3;string iniFilePath="Setup.ini";bool %%4=false; if(File.Exists(iniFilePath)) {long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath); if(OpStation == 0){ %%4=false;}else{ %%4=true;} }
36.获得当前路径string %%1=Environment.CurrentDirectory;
37.读取XML数据库//using System.Xml;XmlDocument doc=new XmlDocument();doc.Load(%%1);string %%9;XmlElement xe=doc.GetElementById(%%7);XmlNodeList elemList=xe.ChildNodes;foreach(XmlNode elem in elemList){if(elem.NodeType==%%8){%%9=elem.Value;break;}}
38.写入XML数据库//using System.Xml;XmlDocument doc=new XmlDocument();doc.Load(%%1);XmlNode root=doc.DocumentElement;XmlElement book=doc.CreateElement(%%3);XmlElement book=doc.CreateElement(%%5);XmlElement port=doc.CreateElement(%%6);book.SetAttribute(%%4,root.ChildNodes.Count.ToString());author.InnerText=%%8;book.appendChild(author);book.appendChild(port);root.appendChild(book);doc.Save(%%1);
39.ZIP压缩文件/*using System.IO;using System.IO.Compression;*/FileStream infile;try{ // Open the file as a FileStream object. infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] buffer = new byte[infile.Length]; // Read the file to ensure it is readable. int count = infile.Read(buffer, 0, buffer.Length); if (count != buffer.Length) { infile.Close();//Test Failed: Unable to read data from file return; } infile.Close(); MemoryStream ms = new MemoryStream(); // Use the newly created memory stream for the compressed data. DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true); //Compression compressedzipStream.Write(buffer, 0, buffer.Length); // Close the stream. compressedzipStream.Close(); //Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length); FileInfo f = new FileInfo(%%2); StreamWriter w = f.CreateText(); w.Write(buffer,0,ms.Length); w.Close();} // end 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-based
platforms, paths must be less than 248 characters, and file names must be less than 260 characters.} catch (DirectoryNotFoundException){ //Error: The specified path is invalid, such as being on an unmapped drive.} catch (IOException){ //Error: An I/O error occurred while opening the file.} catch (UnauthorizedAccessException){ //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required
permissions.} catch (IndexOutOfRangeException){ //Error: You must provide parameters for MyGZIP.}
40.ZIP解压缩/*using System.IO;using System.IO.Compression;*/FileStream infile;try{ // Open the file as a FileStream object. infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] buffer = new byte[infile.Length]; // Read the file to ensure it is readable. int count = infile.Read(buffer, 0, buffer.Length); if (count != buffer.Length) {infile.Close();//Test Failed: Unable to read data from filereturn; } infile.Close(); MemoryStream ms = new MemoryStream(); // ms.Position = 0; DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress); //Decompression byte[] decompressedBuffer = new byte[buffer.Length *2]; zipStream.Close();FileInfo f = new FileInfo(%%2);StreamWriter w = f.CreateText();w.Write(decompressedBuffer);w.Close();} // end 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-based
platforms, paths must be less than 248 characters, and file names must be less than 260 characters.}catch (DirectoryNotFoundException){ //Error: The specified path is invalid, such as being on an unmapped drive.}catch (IOException){ //Error: An I/O error occurred while opening the file.}catch (UnauthorizedAccessException){ //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required
permissions.}catch (IndexOutOfRangeException){ //Error: You must provide parameters for MyGZIP.}
41.获得应用程序完整路径string %%1=Application.ExecutablePath;
42.ZIP压缩文件夹/*using System.IO;using System.IO.Compression;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;*/ private void CreateCompressFile(Stream source, string destinationName) { using (Stream destination = new FileStream(destinationName, FileMode.Create, FileAccess.Write)) { using (GZipStream output = new GZipStream(destination, CompressionMode.Compress)) { byte[] bytes = new byte[4096]; int n; while ((n = source.Read(bytes, 0, bytes.Length)) != 0) { output.Write(bytes, 0, n); } } } }ArrayList list = new ArrayList();foreach (string f in Directory.GetFiles(%%1)){ byte[] destBuffer = File.ReadAllBytes(f); SerializeFileInfo sfi = new SerializeFileInfo(f, destBuffer); list.Add(sfi);}IFormatter formatter = new BinaryFormatter();using (Stream s = new MemoryStream()){ formatter.Serialize(s, list); s.Position = 0; CreateCompressFile(s, %%2);} [Serializable] class SerializeFileInfo { public SerializeFileInfo(string name, byte[] buffer) { fileName = name; fileBuffer = buffer; } string fileName; public string FileName { get { return fileName; } } byte[] fileBuffer; public byte[] FileBuffer { get { return fileBuffer; } } }
43.递归删除目录下的文件//using System.IO;DirectoryInfo DInfo=new DirectoryInfo(%%1);FileSystemInfo[] FSInfo=DInfo.GetFileSystemInfos();for(int i=0;i<FSInfo.Length;i++){FileInfo FInfo=new FileInfo(%%1+FSInfo[i].ToString());FInfo.Delete();}
44.验证DTD/*using System.Xml;using System.Xml.Schema;*/XmlReaderSettings settings = new XmlReaderSettings(); settings.ProhibitDtd = false; settings.ValidationType = ValidationType.DTD; settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); // Create the XmlReader object. XmlReader reader = XmlReader.Create("my book.xml", settings); // Parse the file. while (reader.Read());// Display any validation errors. private static void ValidationCallBack(object sender, ValidationEventArgs e) { Console.WriteLine("Validation Error: {0}", e.Message); }
45.Schema 验证/*using System.Xml;using System.Xml.Schema;*/Boolean m_success;XmlValidatingReader reader = null; XmlSchemaCollection myschema = new XmlSchemaCollection();ValidationEventHandler eventHandler = new ValidationEventHandler(ShowCompileErrors);try{//Create the XML fragment to be parsed.String xmlFrag = "<author xmlns='urn:bookstore- schema'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +"<first-name>Herman</first-name>" +"<last-name>Melville</last-name>" +"</author>";//Create the XmlParserContext.XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);//Implement the reader.reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);//Add the schema.myschema.Add("urn:bookstore-schema", "c:\\Books.xsd");//Set the schema type and add the schema to the reader.reader.ValidationType = ValidationType.Schema;reader.Schemas.Add(myschema);while (reader.Read()){}Console.WriteLine("Completed validating xmlfragment");}catch (XmlException XmlExp){Console.WriteLine(XmlExp.Message);}catch(XmlSchemaException XmlSchExp){Console.WriteLine(XmlSchExp.Message);}catch(Exception GenExp){Console.WriteLine(GenExp.Message);}finally{Console.Read();}public static void ShowCompileErrors(object sender, ValidationEventArgs args){Console.WriteLine("Validation Error: {0}", args.Message);}
46.Grep/*using System.Collections;using System.Text.RegularExpressions;using System.IO;using System.Security;using CommandLine.Utility;*///Traditionally grep stands for "Global Regular Expression Print".//Global means that an entire file is searched. //Regular Expression means that a regular expression string is used to establish a search pattern. //Print means that the command will display its findings. //Simply put, grep searches an entire file for the pattern you want and displays its findings.////The use syntax is different from the traditional Unix syntax, I prefer a syntax similar to//csc, the C# compiler.//// grep [/h|/H] - Usage Help//// grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files//// /c - print a count of matching lines for each input file;// /i - ignore case in pattern;// /l - print just files (scanning will stop on first match);// /n - prefix each line of output with line number;// /r - recursive search in subdirectories;//// /E:reg_exp - the Regular Expression used as search pattern. The Regular Expression can be delimited by// quotes like "..." and '...' if you want to include in it leading or trailing blanks;//// /F:files - the list of input files. The files can be separated by commas as in /F:file1,file2,file3//and wildcards can be used for their specification as in /F:*file?.txt;////Example://// grep /c /n /r /E:" C Sharp " /F:*.cs //Option 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 + "\\" + 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.操作Excel文件//using Excel;private static string Connstring ;//连接字符串Workbook myBook = null;Worksheet mySheet=null;Excel.ApplicationClass ExlApp = new ApplicationClass();ExlApp.Visible =true;object oMissiong = System.Reflection.Missing.Value;string reqpath = this.Request.PhysicalPath;int pos = reqpath.LastIndexOf("\\");reqpath = reqpath.Substring(0,pos);ExlApp.Workbooks.Open(%%1,oMissiong, oMissiong, oMissiong,oMissiong, oMissiong, oMissiong, oMissiong,oMissiong,oMissiong, oMissiong, oMissiong, oMissiong);//, oMissiong);//, oMissiong); // reqpath + "\\scxx.xls"myBook = ExlApp.Workbooks[1];mySheet = (Worksheet)myBook.Worksheets[1];Excel.Range rg; string mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB"using(SqlConnection myConnection = new SqlConnection(Connstring)){SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);myConnection.Open();SqlDataReader myReader;myReader = myCommand.ExecuteReader();// Always call Read before accessing data.int recount=0;while (myReader.Read()) { recount=recount+1;}myReader.Close();myConnection.Close();int gho=3;for(int i = 1; i < recount ; i ++){rg = mySheet.get_Range("A" + gho.ToString(), "C" + ( gho ).ToString()); rg.Copy(oMissiong); rg.Insert(XlInsertShiftDirection.xlShiftDown); } //从数据表中取数据 mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB ORDER BY qy,zb"; myConnection = new SqlConnection(Connstring); myCommand = new SqlCommand(mySelectQuery,myConnection); myConnection.Open(); myReader = myCommand.ExecuteReader(); int Curhs = gho ; while (myReader.Read()) { mySheet.Cells[Curhs,1] =myReader["qy"].ToString() ; mySheet.Cells[Curhs,2] =myReader["zb"].ToString() ; mySheet.Cells[Curhs,3] =myReader["dh"].ToString() ; Curhs ++; } myReader.Close(); //合并最后一页 MergeCell(ref mySheet,3 , recount ,"A"); //调用函数实现A列合并 MergeCell(ref mySheet,3 , recount ,"B"); //调用函数实现A列合并 myBook.SaveAs(%%1, oMissiong,oMissiong, oMissiong,oMissiong,oMissiong,Excel.XlSaveAsAccessMode.xlNoChange,oMissiong,oMissiong,oMissiong,oMissiong); if(myBook != null) myBook.Close(true, %%1, true); if(mySheet != null) System.Runtime.InteropServices.Marshal.ReleaseComObject (mySheet); mySheet = null; if(myBook != null) System.Runtime.InteropServices.Marshal.ReleaseComObject (myBook); myBook = null; if(ExlApp != null) { ExlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject ((object)ExlApp); ExlApp = null; } GC.Collect(); /// 合并单元格 private void MergeCell(ref Worksheet mySheet, int startLine,int RecCount, string Col) { string qy1 = mySheet.get_Range(Col + startLine.ToString(), Col + startLine.ToString()).Text.ToString(); Excel.Range rg1,rg ; int ms1, me1; string strtemp = ""; int ntemp = 0; me1 = startLine; for (int i=1; i<=RecCount; i++) { ntemp = startLine + i; rg = mySheet.get_Range(Col+ ntemp.ToString(), Col+ ntemp.ToString()); strtemp = rg.Text.ToString().Trim(); if (qy1.Trim() != strtemp.Trim()) { ms1 = me1; me1 = i + startLine - 1; //合并 if (me1-ms1>0) { rg1 = mySheet.get_Range(Col + ms1.ToString(), Col + me1.ToString()); rg1.ClearContents(); rg1.MergeCells = true; if(Col == "A") mySheet.Cells[ms1,1] = qy1; else if (Col == "B") mySheet.Cells[ms1,2] = qy1; } me1 += 1; strtemp = mySheet.get_Range(Col + me1.ToString(), Col + me1.ToString()).Text.ToString(); if(strtemp.Trim() != "") qy1 = strtemp; } } }
52.设置JDK环境变量/*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_04 path=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\SendTo if(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.0 useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0)); useful=useless; SysJavaHome.WriteString("Path",(LPCTSTR)useful); Sleep(5000); } else if(srcFileName.Find("ant")>0) { string StrPath; CRegEdit SysJavaHome;string StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:\apache-ant-1.7.1\ PATH=%ANT_HOME%/bin useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0)); useful=useless; SysJavaHome.WriteString("Path",(LPCTSTR)useful); Sleep(5000); } else if(srcFileName.Find("eclipse")==0 || srcFileName.Find("NetBeans")==0) { //char * xmFile=""; //SaveFileToStr("deploy.xml",xmFile); } } else continue; }*/
53.选择文件夹对话框/*using System.IO;using System.Windows.Forms.Design;;//加载System.Design.dll的.Net API*/ public class FolderDialog : FolderNameEditor { FolderNameEditor.FolderBrowser fDialog = new System.Windows.Forms.Design.FolderNameEditor.FolderBrowser(); public FolderDialog() { } public DialogResult DisplayDialog() {return DisplayDialog("请选择一个文件夹"); }
public DialogResult DisplayDialog(string description) {fDialog.Description = description;return fDialog.ShowDialog(); } public string Path {get{ return fDialog.DirectoryPath;} } ~FolderDialog() {fDialog.Dispose(); } } FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if(aa.ShowDialog()==DialogResult.OK) { %%1 = aa.SelectedPath; }
54.删除空文件夹/*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.发送数据到剪贴板//using System.Windows.Forms;Clipboard.SetText(%%1);
56.从剪贴板中取数据//using System.Windows.Forms; IDataObject iData = Clipboard.GetDataObject(); string %%1; // 将数据与指定的格式进行匹配,返回bool if (iData.GetDataPresent(DataFormats.Text)) { // GetData检索数据并指定一个格式 %%1 = (string)iData.GetData(DataFormats.Text); } else { MessageBox.Show("目前剪贴板中数据不可转换为文本","错误"); }
57.获取文件路径的父路径//using System.IO;string %%2=Directory.GetParent(%%1);
58.创建快捷方式//首先添加以下引用:COM下Windows Script Host Object Model,然后可以通过以下方法创建快捷方式。 /*using System.Runtime.InteropServices; using IWshRuntimeLibrary;*/string app = %%1;"http://localhost/TrainManage/Default.aspx"string location1 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites) + "\\培训教学教务管理系统.url"; string location2 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory) + "\\培训教学教务管理系统.url";string location3 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Programs) + "\\培训教学教务管理系统.url";try { // Create a Windows Script Host Shell class IWshShell_Class shell = new IWshShell_ClassClass(); // Define the shortcut file IWshURLShortcut shortcut = shell.CreateShortcut(location1) as IWshURLShortcut; shortcut.TargetPath = app; // Save it shortcut.Save(); shortcut = shell.CreateShortcut(location2) as IWshURLShortcut;shortcut.TargetPath = app; // Save it shortcut.Save(); shortcut = shell.CreateShortcut(location3) as IWshURLShortcut; shortcut.TargetPath = app; // Save it shortcut.Save(); } catch(COMException ex) { Console.WriteLine(ex.Message); }
59.弹出快捷菜单//在工具箱中找到ContextMenuStrip控件,并拖放至Form1窗体//设计菜单内容//将contextMenuStrip1与窗体关联。方法是先选定Form1,为其ContextMenuStrip属性设置属性值为contextMenuStrip1
60.文件夹复制到整合操作/*using System.IO;using System.Collections;*/ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string path = (aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path : aa.Path+"\\"; string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); %%1 = (%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"; DirectoryInfo dir = new DirectoryInfo(%%1); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count>0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.CopyTo(f.FullName.Replace(parent, path)); } } }
61.文件夹移动到整合操作/*using System.IO;using System.Collections;*/ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string filename = Path.GetFileName(%%1); string path=(aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path : aa.Path + "\\"; if (Path.GetPathRoot(%%1) == Path.GetPathRoot(aa.Path)) Directory.Move(%%1, path + filename); else { string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); %%1 = (%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"; DirectoryInfo dir = new DirectoryInfo(%%1); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, path)); } } Directory.Delete(%%1, true); } }
62.目录下所有文件夹复制到整合操作/*using System.IO;using System.Collections;*/ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string direc = %%1;//获取选中的节点的完整路径 foreach (string dirStr in Directory.GetDirectories(direc)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders = new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); folders.AddRange(fileArr); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; Directory.CreateDirectory(aa.Path + d.Name); folders.AddRange(d.GetFileSystemInfos()); } else File.Copy(f.FullName, aa.Path + f.Name); } } }
63.目录下所有文件夹移动到整合操作/*using System.IO;using System.Collections;*/ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { TreeNode CurSelNode = this.DirectorytreeView.SelectedNode;//获取选中的节点 string direc = this.GetNodeFullPath(CurSelNode);//获取选中的节点的完整路径 if (Path.GetPathRoot(direc) == Path.GetPathRoot(aa.Path)) foreach (string dir in Directory.GetDirectories(direc)) Directory.Move(dir, aa.Path); else { foreach (string dir2 in Directory.GetDirectories(direc)) { string parent = Path.GetDirectoryName(dir2); Directory.CreateDirectory(Path.Combine(aa.Path, Path.GetFileName(dir2))); string dir = (dir2.LastIndexOf("\\") == dir2.Length - 1) ? dir2 : dir2 + "\\"; DirectoryInfo dirdir = new DirectoryInfo(dir); FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", aa.Path)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, aa.Path)); } } dirdir.Delete(true); } } }
64.目录下所有文件复制到整合操作/*using System.IO;using System.Collections;*/ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string direc = %%1;//获取选中的节点的完整路径 foreach (string fileStr in Directory.GetFiles(direc)) File.Copy((direc.LastIndexOf("\\") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "\\" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "\\" + Path.GetFileName(fileStr)); }
65.目录下所有文件移动到整合操作/*using System.IO;using System.Collections;*/ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string direc = %%1;//获取选中的节点的完整路径 foreach (string fileStr in Directory.GetFiles(direc)) File.Move((direc.LastIndexOf("\\") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "\\" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "\\" + Path.GetFileName(fileStr)); DirectoryInfolistView.Clear(); }
66.对目标压缩文件解压缩到指定文件夹/*using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Collections;System.Design.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("\\") == aa.Path.Length - 1) ? aa.Path : aa.Path + "\\"; string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); %%1 = (%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"; DirectoryInfo dir = new DirectoryInfo(%%1); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { if(b) File.Create(f.FullName.Replace(parent, path)); } } }
68.打开网页System.Diagnostics.Process.Start("IEXPLORE.EXE", "http://ant.sourceforge.net/");
69.删除空文件夹整合操作//using System.IO; FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string path = aa.Path; DirectoryInfo dir = new DirectoryInfo(aa.Path); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path)); while (Folders.Count > 0) { path = Folders.Dequeue(); string[] dirs = Directory.GetDirectories(path); try { Directory.Delete(path); } catch (Exception) { foreach (string direct in dirs) { Folders.Enqueue(direct); } } } }
70.获取磁盘所有分区后再把光驱盘符去除(用"\0"代替),把结果放在数组allfenqu[] 中,数组中每个元素代表一个分区盘符,不包括 :\\ 这样的路径,allfenqu[]数组开始时存放的是所有盘符。 当我用这样的代码测试结果是正确的,光驱盘符会被去掉: //using System.IO;stringroot; //root代表盘符路径 for(i=0;i<20;i++) //0-20代表最大的盘符数 { root.Format("%c:\\",allfenqu[i]); if(GetDriveType(root)==5) allfenqu[i]='\0'; }
但我用这样的代码时结果却无法去掉光驱盘符,allfenqu[]中还是会包含光驱盘符: stringroot; for(i=0;i<20;i++) { root=allfenqu[i]+":\\"; if(GetDriveType(root)==5) allfenqu[i]='\0'; }
71.激活一个程序或程序关联的文件//using System.Diagnostics;Process LandFileDivisison; LandFileDivisison = new System.Diagnostics.Process(); LandFileDivisison.StartInfo.FileName = %%1; LandFileDivisison.Start();
72.HTTP下载/*using System.Web;using System.Threading;using System.IO;using System.Net;*/ private WebClient client = new WebClient(); Thread th = new Thread(new ThreadStart(StartDownload)); th.Start(); private void StartDownload() { //Start.Enabled = false; string URL = %%1; int n = URL.LastIndexOf("/"); string URLAddress = URL.Substring(0, n); string fileName = URL.Substring(n + 1, URL.Length - n - 1); string Dir = %%2; string Path = Dir.ToString() + "\\" + fileName; try { WebRequest myre = WebRequest.Create(URLAddress); } catch (WebException exp) { MessageBox.Show(exp.Message, "Error"); } try { //statusBar.Text = "开始下载文件..."; client.DownloadFile(URLAddress, fileName); Stream str = client.OpenRead(URLAddress); StreamReader reader = new StreamReader(str); byte[] mbyte = new byte[100000]; int allmybyte = (int)mbyte.Length; int startmbyte = 0; //statusBar.Text = "正在接收数据..."; while (allmybyte > 0) { int m = str.Read(mbyte, startmbyte, allmybyte); if (m == 0) break; startmbyte += m; allmybyte -= m; } FileStream fstr = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write); fstr.Write(mbyte, 0, startmbyte); str.Close(); fstr.Close(); //statusBar.Text = "下载完毕!"; MessageBox.Show("下载完毕"); } catch (WebException exp) { MessageBox.Show(exp.Message, "Error"); //statusBar.Text = ""; } Start.Enabled = true; }
73.FTP下载/*using System.IO;using System.Text.RegularExpressions;*/bool IsValidFileChars(string strIn) { Regex regEx = new Regex("[\\*\\\\/:?<>|\"]"); return !regEx.IsMatch("aj\\pg"); } public bool DownloadFile(string RemoteFileName, string LocalPath) { return DownloadFile(RemoteFileName, LocalPath, RemoteFileName); } /** <summary> /// 从FTP服务器下载文件,指定本地路径和本地文件名 /// </summary> /// <param name="RemoteFileName">远程文件名</param> /// <param name="LocalPath">本地路径</param> /// <param name="LocalFilePath">保存文件的本地路径,后面带有"\"</param> /// <param name="LocalFileName">保存本地的文件名</param> public bool DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName) { byte[] bt = null; try { if (!IsValidFileChars(RemoteFileName) || !IsValidFileChars(LocalFileName) || !IsValidPathChars(LocalPath)) { throw new Exception("非法文件名或目录名!"); } if (!Directory.Exists(LocalPath)) { throw new Exception("本地文件路径不存在!"); }
string LocalFullPath = Path.Combine(LocalPath, LocalFileName); if (File.Exists(LocalFullPath)) { throw new Exception("当前路径下已经存在同名文件!"); } bt = DownloadFile(RemoteFileName); if (bt != null) { FileStream stream = new FileStream(LocalFullPath, FileMode.Create); stream.Write(bt, 0, bt.Length); stream.Flush(); stream.Close(); return true; } else { return false; } } catch (Exception ep) { ErrorMsg = ep.ToString(); throw ep; } }
/** <summary> /// 从FTP服务器下载文件,返回文件二进制数据 /// </summary> /// <param name="RemoteFileName">远程文件名</param> public byte[] DownloadFile(string RemoteFileName) { try { if (!IsValidFileChars(RemoteFileName)) { throw new Exception("非法文件名或目录名!"); } Response = Open(new Uri(this.Uri.ToString() + RemoteFileName), WebRequestMethods.Ftp.DownloadFile); Stream Reader = Response.GetResponseStream();
MemoryStream mem = new MemoryStream(1024 * 500); byte[] buffer = new byte[1024]; int bytesRead = 0; int TotalByteRead = 0; while (true) { bytesRead = Reader.Read(buffer, 0, buffer.Length); TotalByteRead += bytesRead; if (bytesRead == 0) break; mem.Write(buffer, 0, bytesRead); } if (mem.Length > 0) { return mem.ToArray(); } else { return null; } } catch (Exception ep) { ErrorMsg = ep.ToString(); throw ep; } }
74.写图像到剪切板 setClipboardImage//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.拷贝文件名复制文件//添加引用System.Windows.Formsusing System;using System.Collections.Generic;using System.Text;using System.IO;using System.Windows.Forms;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { IDataObject iData = Clipboard.GetDataObject(); string str; // 将数据与指定的格式进行匹配,返回bool if (iData.GetDataPresent(DataFormats.Text)) { // GetData检索数据并指定一个格式 str = (string)iData.GetData(DataFormats.Text); File.Copy(str, @"C:\" + Path.GetFileName(str)); } else { MessageBox.Show("目前剪贴板中数据不可转换为文本", "错误"); } } }}
79.开源程序库Xercesc-C++代码工程中内联using System;using System.IO;using System.Collections;using System.Collections.Generic;using System.Text.RegularExpressions;using System.Text;
public class InlineXercesc{ private const String filter = ".cpp"; private ArrayList all = new ArrayList(); private Queue<String> fal2 = new Queue<String>(); private static String CurDir = Environment.CurrentDirectory; public InlineXercesc(String lib) { string SourceLib = "D:\\Desktop\\大项目\\xerces-c-3.0.1\\src"; string pattern = "include.*?" + lib + ".*?>"; // 第一个参数为需要匹配的字符串 Match matcher = null; Queue<string> fal = new Queue<string>(); DirectoryInfo delfile = new DirectoryInfo(CurDir); foreach (DirectoryInfo files2 in delfile.GetDirectories()) { String enumDir = CurDir + "\\" + files2.Name + "\\"; FileSystemInfo[] fileArr = files2.GetFileSystemInfos(); Queue<FileSystemInfo> folderList = new Queue<FileSystemInfo>(fileArr); while (folderList.Count > 0) { FileSystemInfo tmp = folderList.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { folderList.Enqueue(fi); } } else { StreamReader br = null; try { br = new StreamReader(file); // 打开文件 } catch (IOException e) { // 没有打开文件,则产生异常 System.Console.Error.WriteLine("Cannot read '" + f.FullName + "': " + e.Message); continue; } String line; StringBuilder sb = new StringBuilder(2048); while ((line = br.ReadLine()) != null) { // 读入一行,直到文件结束 matcher = Regex.Match(line, pattern); // 匹配字符串 if (matcher.Success == true) { // 如果有匹配的字符串,则输出 sb.Append(line.Replace(line.Substring(line.IndexOf("<"), (line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "\"").Replace('>', '\"')); line = line.Substring(line.IndexOf("<") + 1, (line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/', '\\'); fal.Enqueue(SourceLib + "\\" + line); } else { sb.Append(line); } sb.Append("\r\n"); } br.Close(); // 关闭文件 StreamWriter w = new StreamWriter(f.FullName); w.WriteLine(sb.ToString()); w.Close(); } } while (fal.Count > 0) { String file = fal.Dequeue(); // 第2个参数开始,均为文件名。 String targetPath = enumDir + file.Substring(file.LastIndexOf("\\") + 1); if (targetPath.IndexOf('<') == -1 && !!File.Exists(targetPath)) { File.CreateText(targetPath); StreamReader br = null; String line; try { br = new StreamReader(new StreamReader(file).BaseStream, System.Text.Encoding.UTF7); // 打开文件 } catch (IOException e) { // 没有打开文件,则产生异常 //UPGRADE_TODO: 在 .NET 中,method 'java.lang.Throwable.getMessage' 的等效项可能返回不同的值。. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1043"' System.Console.Error.WriteLine("Cannot read '" + file + "': " + e.Message); continue; } StreamWriter fw = new StreamWriter(targetPath); while ((line = br.ReadLine()) != null) { // 读入一行,直到文件结束 matcher = Regex.Match(line, pattern); // 匹配字符串 if (matcher.Success == true) { // 如果有匹配的字符串,则输出 fal.Enqueue(SourceLib + "\\" + line.Substring(line.IndexOf("<") + 1, (line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/', '\\')); line = line.Replace(line.Substring(line.IndexOf("<"), (line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "\""); line = line.Replace(">", "\""); } fw.Write(line + "\r\n"); } fw.Flush(); fw.Close(); br.Close(); // 关闭文件 } } Queue<string> folderListArr = new Queue<string>(); folderListArr.Enqueue(CurDir); while (folderListArr.Count > 0) { DirectoryInfo file = new DirectoryInfo(folderListArr.Dequeue()); FileSystemInfo[] files = file.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++) { DirectoryInfo ddd = files[i] as DirectoryInfo; if (ddd != null) { folderListArr.Enqueue(files[i].FullName); } else { if (files[i].Extension == ".hpp") { all.Add(files[i].FullName.Replace(".hpp", ".cpp")); } } } } int count = 1; while (count > 0) { doSearch(SourceLib); all.Clear(); while (fal2.Count > 0) { String file1 = fal2.Dequeue(); // 第2个参数开始,均为文件名。 String targetPath = enumDir + file1.Substring(file1.LastIndexOf("\\") + 1); if (targetPath.IndexOf('<') == -1 && !File.Exists(targetPath)) {File.CreateText(targetPath); StreamReader br = null; String line; try { br = new StreamReader(file1); // 打开文件 } catch (IOException e) { System.Console.Error.WriteLine("Cannot read '" + file1 + "': " + e.Message); continue; } StreamWriter fw; try { fw = new StreamWriter(targetPath); while ((line = br.ReadLine()) != null) { // 读入一行,直到文件结束 matcher = Regex.Match(line, pattern); // 匹配字符串 if (matcher.Success == true) { // 如果有匹配的字符串,则输出 fal2.Enqueue(SourceLib + "\\" + line.Substring(line.IndexOf('<') + 1, (line.LastIndexOf('>')) - (line.IndexOf('<') + 1)).Replace('/', '\\')); all.Add(fal2.Peek().Replace(".hpp", ".cpp")); line = line.Replace(line.Substring(line.IndexOf('<'), (line.LastIndexOf('/') + 1) - (line.IndexOf('<'))), "\""); line = line.Replace('>', '\"'); } fw.Write(line + "\r\n"); } fw.Flush(); fw.Close(); br.Close(); // 关闭文件 } catch (IOException e) { Console.Error.WriteLine(e.StackTrace); } } } count = all.Count; } } }
private void doSearch(string path) { DirectoryInfo filepath = new DirectoryInfo(path); if (filepath.Exists) {
FileSystemInfo[] fileArray = filepath.GetFileSystemInfos(); foreach (FileSystemInfo f in fileArray) { DirectoryInfo dd = f as DirectoryInfo; if (dd != null) { doSearch(f.FullName); } else { FileInfo ff = f as FileInfo; if (f.Name.IndexOf(filter) > -1) { foreach (string file in all) { if (file.IndexOf('<') == -1 && Path.GetFileName(file) == f.Name) { fal2.Enqueue(f.FullName); } } } } } } } static void Main(String[] args) { new InlineXercesc("xercesc"); FileInfo f = new FileInfo(CurDir + "\\DetailCpp.cmd"); StreamWriter w = f.CreateText(); w.WriteLine("copy StdAfx.cpp+*.c+*.cpp " + CurDir + "\\StdAfx.cpp && del *.c && del *.cpp"); w.Close(); }}
80.提取包含头文件列表//InlineExt.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.Default foreach(string it in ts) { fw.Write("#include \"" + it + "\"\r\n"); } } } catch (IOException e) { // 没有打开文件,则产生异常 Console.Error.WriteLine("Cannot read '" + file + "': " + e.Message); continue; } finally { try { if (br != null) br.Close(); if (fw != null) fw.Close(); } catch (IOException e) { Console.WriteLine(e.StackTrace); } } } } } public static void Main(System.String[] args) { new InlineExt(); }}
//SupportClass.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.剪贴扳转换成打印字符//using System.Windows.Forms; IDataObject iData = Clipboard.GetDataObject(); string str; // 将数据与指定的格式进行匹配,返回bool if (iData.GetDataPresent(DataFormats.Text)) { // GetData检索数据并指定一个格式 str = (string)iData.GetData(DataFormats.Text); string[] arr = str.Split("\r\n".ToCharArray()); StringBuilder sb = new StringBuilder(1024); sb.Append("System.out.println(\"@echo off\");\r\n"); foreach (string s in arr) { if (s.Trim()!="") { sb.Append("System.out.println(\"ECHO " + s.Replace("^", "^^").Replace("&", "^&").Replace(":", "^:").Replace(">", "^>").Replace("<", "^<").Replace("|", "^|").Replace("\"", "^\"").Replace(@"\", @"\\").Replace("\"", "\\\"") + "\");"); sb.Append("\r\n"); } } Clipboard.SetText(sb.ToString()); } else { MessageBox.Show("目前剪贴板中数据不可转换为文本", "错误"); }
82.把JButton或JTree组件写到一个流中
83.注册全局热键注册全局热键要用到Windows的API方法RegisterHotKey和UnregisterHotKey。一、声明注册热键方法 [DllImport("user32.dll")]private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);[DllImport("user32.dll")]private static extern int UnregisterHotKey(IntPtr hwnd, int id);int Space = 32; //热键IDprivate const int WM_HOTKEY = 0x312; //窗口消息-热键private const int WM_CREATE = 0x1; //窗口消息-创建private const int WM_DESTROY = 0x2; //窗口消息-销毁private const int MOD_ALT = 0x1; //ALTprivate const int MOD_CONTROL = 0x2; //CTRLprivate const int MOD_SHIFT = 0x4; //SHIFTprivate const int VK_SPACE = 0x20; //SPACE二、注册热键方法 /// <summary>/// 注册热键/// </summary>/// <param name="hwnd">窗口句柄</param>/// <param name="hotKey_id">热键ID</param>/// <param name="fsModifiers">组合键</param>/// <param name="vk">热键</param>private void RegKey(IntPtr hwnd, int hotKey_id, int fsModifiers, int vk){bool result;if (RegisterHotKey(hwnd,hotKey_id,fsModifiers,vk) == 0){result = false;}else{result = true;}if (!result){MessageBox.Show("注册热键失败!");}}
/// <summary>/// 注销热键/// </summary>/// <param name="hwnd">窗口句柄</param>/// <param name="hotKey_id">热键ID</param>private void UnRegKey(IntPtr hwnd, int hotKey_id){UnregisterHotKey(hwnd,hotKey_id);}三、重写WndProc方法,实现注册 protected override void WndProc(ref Message m){base.WndProc(ref m);switch(m.Msg){case WM_HOTKEY: //窗口消息-热键switch(m.WParam.ToInt32()){case 32: //热键IDMessageBox.Show("Hot Key : Ctrl + Alt + Shift + Space");break; default: break;}break;case WM_CREATE: //窗口消息-创建RegKey(Handle,Space,MOD_ALT | MOD_CONTROL | MOD_SHIFT,VK_SPACE); //注册热键break;case WM_DESTROY: //窗口消息-销毁UnRegKey(Handle,Space); //销毁热键break;default:break;}}附:虚拟键值表{ Virtual Keys, Standard Set }{$EXTERNALSYM VK_LBUTTON}VK_LBUTTON = 1;{$EXTERNALSYM VK_RBUTTON}VK_RBUTTON = 2;{$EXTERNALSYM VK_CANCEL}VK_CANCEL = 3;{$EXTERNALSYM VK_MBUTTON}VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON }{$EXTERNALSYM VK_BACK}VK_BACK = 8;{$EXTERNALSYM VK_TAB}VK_TAB = 9;{$EXTERNALSYM VK_CLEAR}VK_CLEAR = 12;{$EXTERNALSYM VK_RETURN}VK_RETURN = 13;{$EXTERNALSYM VK_SHIFT}VK_SHIFT = $10;{$EXTERNALSYM VK_CONTROL}VK_CONTROL = 17;{$EXTERNALSYM VK_MENU}VK_MENU = 18;{$EXTERNALSYM VK_PAUSE}VK_PAUSE = 19;{$EXTERNALSYM VK_CAPITAL}VK_CAPITAL = 20;{$EXTERNALSYM VK_KANA }VK_KANA = 21;{$EXTERNALSYM VK_HANGUL }VK_HANGUL = 21;{$EXTERNALSYM VK_JUNJA }VK_JUNJA = 23;{$EXTERNALSYM VK_FINAL }VK_FINAL = 24;{$EXTERNALSYM VK_HANJA }VK_HANJA = 25;{$EXTERNALSYM VK_KANJI }VK_KANJI = 25;{$EXTERNALSYM VK_CONVERT }VK_CONVERT = 28;{$EXTERNALSYM VK_NONCONVERT }VK_NONCONVERT = 29;{$EXTERNALSYM VK_ACCEPT }VK_ACCEPT = 30;{$EXTERNALSYM VK_MODECHANGE }VK_MODECHANGE = 31;{$EXTERNALSYM VK_ESCAPE}VK_ESCAPE = 27;{$EXTERNALSYM VK_SPACE}VK_SPACE = $20;{$EXTERNALSYM VK_PRIOR}VK_PRIOR = 33;{$EXTERNALSYM VK_NEXT}VK_NEXT = 34;{$EXTERNALSYM VK_END}VK_END = 35;{$EXTERNALSYM VK_HOME}VK_HOME = 36;{$EXTERNALSYM VK_LEFT}VK_LEFT = 37;{$EXTERNALSYM VK_UP}VK_UP = 38;{$EXTERNALSYM VK_RIGHT}VK_RIGHT = 39;{$EXTERNALSYM VK_DOWN}VK_DOWN = 40;{$EXTERNALSYM VK_SELECT}VK_SELECT = 41;{$EXTERNALSYM VK_PRINT}VK_PRINT = 42;{$EXTERNALSYM VK_EXECUTE}VK_EXECUTE = 43;{$EXTERNALSYM VK_SNAPSHOT}VK_SNAPSHOT = 44;{$EXTERNALSYM VK_INSERT}VK_INSERT = 45;{$EXTERNALSYM VK_DELETE}VK_DELETE = 46;{$EXTERNALSYM VK_HELP}VK_HELP = 47;{ VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39) }{ VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A) }{$EXTERNALSYM VK_LWIN}VK_LWIN = 91;{$EXTERNALSYM VK_RWIN}VK_RWIN = 92;{$EXTERNALSYM VK_APPS}VK_APPS = 93;{$EXTERNALSYM VK_NUMPAD0}VK_NUMPAD0 = 96;{$EXTERNALSYM VK_NUMPAD1}VK_NUMPAD1 = 97;{$EXTERNALSYM VK_NUMPAD2}VK_NUMPAD2 = 98;{$EXTERNALSYM VK_NUMPAD3}VK_NUMPAD3 = 99;{$EXTERNALSYM VK_NUMPAD4}VK_NUMPAD4 = 100;{$EXTERNALSYM VK_NUMPAD5}VK_NUMPAD5 = 101;{$EXTERNALSYM VK_NUMPAD6}VK_NUMPAD6 = 102;{$EXTERNALSYM VK_NUMPAD7}VK_NUMPAD7 = 103;{$EXTERNALSYM VK_NUMPAD8}VK_NUMPAD8 = 104;{$EXTERNALSYM VK_NUMPAD9}VK_NUMPAD9 = 105;{$EXTERNALSYM VK_MULTIPLY}VK_MULTIPLY = 106;{$EXTERNALSYM VK_ADD}VK_ADD = 107;{$EXTERNALSYM VK_SEPARATOR}VK_SEPARATOR = 108;{$EXTERNALSYM VK_SUBTRACT}VK_SUBTRACT = 109;{$EXTERNALSYM VK_DECIMAL}VK_DECIMAL = 110;{$EXTERNALSYM VK_DIVIDE}VK_DIVIDE = 111;{$EXTERNALSYM VK_F1}VK_F1 = 112;{$EXTERNALSYM VK_F2}VK_F2 = 113;{$EXTERNALSYM VK_F3}VK_F3 = 114;{$EXTERNALSYM VK_F4}VK_F4 = 115;{$EXTERNALSYM VK_F5}VK_F5 = 116;{$EXTERNALSYM VK_F6}VK_F6 = 117;{$EXTERNALSYM VK_F7}VK_F7 = 118;{$EXTERNALSYM VK_F8}VK_F8 = 119;{$EXTERNALSYM VK_F9}VK_F9 = 120;{$EXTERNALSYM VK_F10}VK_F10 = 121;{$EXTERNALSYM VK_F11}VK_F11 = 122;{$EXTERNALSYM VK_F12}VK_F12 = 123;{$EXTERNALSYM VK_F13}VK_F13 = 124;{$EXTERNALSYM VK_F14}VK_F14 = 125;{$EXTERNALSYM VK_F15}VK_F15 = 126;{$EXTERNALSYM VK_F16}VK_F16 = 127;{$EXTERNALSYM VK_F17}VK_F17 = 128;{$EXTERNALSYM VK_F18}VK_F18 = 129;{$EXTERNALSYM VK_F19}VK_F19 = 130;{$EXTERNALSYM VK_F20}VK_F20 = 131;{$EXTERNALSYM VK_F21}VK_F21 = 132;{$EXTERNALSYM VK_F22}VK_F22 = 133;{$EXTERNALSYM VK_F23}VK_F23 = 134;{$EXTERNALSYM VK_F24}VK_F24 = 135;{$EXTERNALSYM VK_NUMLOCK}VK_NUMLOCK = 144;{$EXTERNALSYM VK_SCROLL}VK_SCROLL = 145;{ VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.Used only as parameters to GetAsyncKeyState() and GetKeyState().No other API or message will distinguish left and right keys in this way. }{$EXTERNALSYM VK_LSHIFT}VK_LSHIFT = 160;
84.菜单勾选/取消完成后关闭计算机/*using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } [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_SHUTDOWN = 0x00000001; internal const int EWX_POWEROFF = 0x00000008; internal const int EWX_FORCE = 0x00000004; internal const int EWX_FORCEIFHUNG = 0x00000010;*/int flg=EWX_FORCE | EWX_POWEROFF; 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);
85.菜单勾选/取消完成后重新启动计算机/*using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } [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_SHUTDOWN = 0x00000001; internal const int EWX_REBOOT = 0x00000002; internal const int EWX_FORCE = 0x00000004; internal const int EWX_FORCEIFHUNG = 0x00000010;*/int flg=EWX_FORCE | EWX_REBOOT; 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);
86.菜单勾选/取消完成后注销计算机/*using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } [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_SHUTDOWN = 0x00000001; internal const int EWX_LOGOFF = 0x00000000; internal const int EWX_FORCE = 0x00000004; internal const int EWX_FORCEIFHUNG = 0x00000010;*/int flg=EWX_FORCE | EWX_LOGOFF; 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);
87.菜单勾选/取消开机自启动程序 public void RunWhenStart(bool Started) {string name=%%1;string path=Application.ExecutablePath; RegistryKey HKLM = Registry.LocalMachine; RegistryKey Run = HKLM.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"); if (Started == true) { try { Run.SetValue(name, path); HKLM.Close(); } catch (Exception) { MessageBox.Show("注册表修改错误(开机自启未实现)"); } } else { try { if (Run.GetValue(name) != null) { Run.DeleteValue(name); HKLM.Close(); } else return; } catch (Exception e) { //ExceptionTransact.WriteErrLog(base.GetType().Name, e.Message);MessageBox(e.Message); } } }
88.菜单勾选/取消自动登录系统
89.模拟键盘输入字符串using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using KenZhang.Free.VirtualInput;using System.Runtime.InteropServices;
namespace VirtualInputDemo{ public partial class Form1 : Form { public const int INPUT_KEYBOARD = 1; public const int KEYEVENTF_KEYUP = 0x0002; [DllImport("user32.dll")] public static extern UInt32 SendInput(UInt32 nInputs, ref INPUT pInputs, int cbSize); [StructLayout(LayoutKind.Explicit)] public struct INPUT { [FieldOffset(0)] public Int32 type; [FieldOffset(4)] public KEYBDINPUT ki; [FieldOffset(4)] public MOUSEINPUT mi; [FieldOffset(4)] public HARDWAREINPUT hi; }
[StructLayout(LayoutKind.Sequential)] public struct MOUSEINPUT { public Int32 dx; public Int32 dy; public Int32 mouseData; public Int32 dwFlags; public Int32 time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential)] public struct KEYBDINPUT { public Int16 wVk; public Int16 wScan; public Int32 dwFlags; public Int32 time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential)] public struct HARDWAREINPUT { public Int32 uMsg; public Int16 wParamL; public Int16 wParamH; }
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { textBox1.Focus(); INPUT inDown = new INPUT(); inDown.type = INPUT_KEYBOARD; inDown.ki.wVk = (int)Keys.A; //INPUT inUp = new INPUT(); //inUp.type = INPUT_KEYBOARD; //inUp.ki.wVk = (int)Keys.A; //inUp.ki.dwFlags = KEYEVENTF_KEYUP; SendInput(1, ref inDown, Marshal.SizeOf(inDown)); //SendInput(1, ref inUp, Marshal.SizeOf(inUp)); } }}
90.提取PDF文件中的文本xpdf public partial class Form1 : Form { public 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, uint dwDesiredAccess, 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控制台程序的输出信息 delegate void dReadLine(string strLine); private void excuteCommand(string strFile, string args, dReadLine onReadLine) { System.Diagnostics.Process p = new System.Diagnostics.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) { this.textBox1.Text += strLine + " "; } excuteCommand("ipconfig", "", new dReadLine(PrintMessage));
93.接受邮件
94.发送邮件using System;using System.Net.Sockets;using System.Net;using System.Security.Cryptography;using System.IO; // 类名:Pop3 // 功能:接收电子邮件
namespace ZTSX.Email{/// <summary>/// Pop3 的摘要说明。/// </summary>public class Pop3{private string mstrHost = null; //主机名称或IP地址private int mintPort = 110; //主机的端口号(默认为110)private TcpClient mtcpClient = null; //客户端private NetworkStream mnetStream = null; //网络基础数据流private StreamReader m_stmReader = null; //读取字节流private string mstrStatMessage = null; //执行STAT命令后得到的消息(从中得到邮件数)
/// <summary>/// 构造函数/// </summary>/// <remarks>一个邮件接收对象</remarks>public Pop3(){}
/// <summary>/// 构造函数/// </summary>/// <param name="host">主机名称或IP地址</param>public Pop3(string host){ mstrHost = host;}
/// <summary>/// 构造函数/// </summary>/// <param name="host">主机名称或IP地址</param>/// <param name="port">主机的端口号</param>/// <remarks>一个邮件接收对象</remarks>public Pop3(string host,int port){ mstrHost = host; mintPort = port;}
#region 属性
/// <summary>/// 主机名称或IP地址/// </summary>/// <remarks>主机名称或IP地址</remarks>public string HostName{ get{return mstrHost;} set{mstrHost = value;}}
/// <summary>/// 主机的端口号/// </summary>/// <remarks>主机的端口号</remarks>public int Port{ get{return mintPort;} set{mintPort = value;}}
#endregion
#region 私有方法
/// <summary>/// 向网络访问的基础数据流中写数据(发送命令码)/// </summary>/// <param name="netStream">可以用于网络访问的基础数据流</param>/// <param name="command">命令行</param>/// <remarks>向网络访问的基础数据流中写数据(发送命令码)</remarks>private void WriteToNetStream(ref NetworkStream netStream,String command){ string strToSend = command + "\r\n"; byte[] arrayToSend = System.Text.Encoding.ASCII.GetBytes(strToSend.ToCharArray()); netStream.Write(arrayToSend,0,arrayToSend.Length);}
/// <summary>/// 检查命令行结果是否正确/// </summary>/// <param name="message">命令行的执行结果</param>/// <param name="check">正确标志</param>/// <returns>/// 类型:布尔/// 内容:true表示没有错误,false为有错误/// </returns>/// <remarks>检查命令行结果是否有错误</remarks>private bool CheckCorrect(string message,string check){ if(message.IndexOf(check) == -1) return false; else return true;}
/// <summary>/// 邮箱中的未读邮件数/// </summary>/// <param name="message">执行完LIST命令后的结果</param>/// <returns>/// 类型:整型/// 内容:邮箱中的未读邮件数/// </returns>/// <remarks>邮箱中的未读邮件数</remarks>private int GetMailNumber(string message){ string[] strMessage = message.Split(' '); return Int32.Parse(strMessage[1]);}
/// <summary>/// 得到经过解码后的邮件的内容/// </summary>/// <param name="encodingContent">解码前的邮件的内容</param>/// <returns>/// 类型:字符串/// 内容:解码后的邮件的内容/// </returns>/// <remarks>得到解码后的邮件的内容</remarks>private string GetDecodeMailContent(string encodingContent){ string strContent = encodingContent.Trim(); string strEncode = null;
int iStart = strContent.IndexOf("Base64"); if(iStart == -1) throw new Pop3Exception("邮件内容不是Base64编码,请检查"); else { strEncode = strContent.Substring(iStart + 6,strContent.Length - iStart - 6); try { return SX.Encode.TransformToString(strEncode); } catch(SX.EncodeException exc) { throw new Pop3Exception(exc.Message); } }}
#endregion
/// <summary>/// 与主机建立连接/// </summary>/// <returns>/// 类型:布尔/// 内容:连接结果(true为连接成功,false为连接失败)/// </returns>/// <remarks>与主机建立连接</remarks>public bool Connect(){ if(mstrHost == null) throw new Exception("请提供SMTP主机名称或IP地址!"); if(mintPort == 0) throw new Exception("请提供SMTP主机的端口号"); try { mtcpClient = new TcpClient(mstrHost,mintPort); mnetStream = mtcpClient.GetStream(); m_stmReader = new StreamReader(mtcpClient.GetStream());
string strMessage = m_stmReader.ReadLine(); if(CheckCorrect(strMessage,"+OK") == true) return true; else return false; } catch(SocketException exc) { throw new Pop3Exception(exc.ToString()); } catch(NullReferenceException exc) { throw new Pop3Exception(exc.ToString()); }}
#region Pop3命令
/// <summary>/// 执行Pop3命令,并检查执行的结果/// </summary>/// <param name="command">Pop3命令行</param>/// <returns>/// 类型:字符串/// 内容:Pop3命令的执行结果/// </returns>private string ExecuteCommand(string command){ string strMessage = null; //执行Pop3命令后返回的消息
try { //发送命令 WriteToNetStream(ref mnetStream,command);
//读取多行 if(command.Substring(0,4).Equals("LIST") || command.Substring(0,4).Equals("RETR") || command.Substring(0,4).Equals("UIDL")) //记录STAT后的消息(其中包含邮件数) { strMessage = ReadMultiLine();
if(command.Equals("LIST")) //记录LIST后的消息(其中包含邮件数) mstrStatMessage = strMessage; } //读取单行 else strMessage = m_stmReader.ReadLine();
//判断执行结果是否正确 if(CheckCorrect(strMessage,"+OK")) return strMessage; else return "Error"; } catch(IOException exc) { throw new Pop3Exception(exc.ToString()); }}
/// <summary>/// 在Pop3命令中,LIST、RETR和UIDL命令的结果要返回多行,以点号(.)结尾,/// 所以如果想得到正确的结果,必须读取多行/// </summary>/// <returns>/// 类型:字符串/// 内容:执行Pop3命令后的结果/// </returns>private string ReadMultiLine(){ string strMessage = m_stmReader.ReadLine(); string strTemp = null; while(strMessage != ".") { strTemp = strTemp + strMessage; strMessage = m_stmReader.ReadLine(); } return strTemp;}
//USER命令private string USER(string user){ return ExecuteCommand("USER " + user) + "\r\n";}
//PASS命令private string PASS(string password){ return ExecuteCommand("PASS " + password) + "\r\n";}
//LIST命令private string LIST(){ return ExecuteCommand("LIST") + "\r\n";}
//UIDL命令private string UIDL(){ return ExecuteCommand("UIDL") + "\r\n";}
//NOOP命令private string NOOP(){ return ExecuteCommand("NOOP") + "\r\n";}
//STAT命令private string STAT(){ return ExecuteCommand("STAT") + "\r\n";}
//RETR命令private string RETR(int number){ return ExecuteCommand("RETR " + number.ToString()) + "\r\n";}
//DELE命令private string DELE(int number){ return ExecuteCommand("DELE " + number.ToString()) + "\r\n";}
//QUIT命令private void Quit(){ WriteToNetStream(ref mnetStream,"QUIT");}
/// <summary>/// 收取邮件/// </summary>/// <param name="user">用户名</param>/// <param name="password">口令</param>/// <returns>/// 类型:字符串数组/// 内容:解码前的邮件内容/// </returns>private string[] ReceiveMail(string user,string password){ int iMailNumber = 0; //邮件数
if(USER(user).Equals("Error")) throw new Pop3Exception("用户名不正确!"); if(PASS(password).Equals("Error")) throw new Pop3Exception("用户口令不正确!"); if(STAT().Equals("Error")) throw new Pop3Exception("准备接收邮件时发生错误!"); if(LIST().Equals("Error")) throw new Pop3Exception("得到邮件列表时发生错误!");
try { iMailNumber = GetMailNumber(mstrStatMessage);
//没有新邮件 if(iMailNumber == 0) return null; else { string[] strMailContent = new string[iMailNumber];
for(int i = 1 ; i <= iMailNumber ; i++) { //读取邮件内容 strMailContent[i - 1] = GetDecodeMailContent(RETR(i)); } return strMailContent; } } catch(Pop3Exception exc) { throw new Pop3Exception(exc.ToString()); }}
#endregion
/// <summary>/// 收取邮件 /// </summary>/// <param name="user">用户名</param>/// <param name="password">口令</param>/// <returns>/// 类型:字符串数组/// 内容:解码前的邮件内容/// </returns>///<remarks>收取邮箱中的未读邮件</remarks>public string[] Receive(string user,string password){ try { return ReceiveMail(user,password); } catch(Pop3Exception exc) { throw new Pop3Exception(exc.ToString()); }}
/// <summary>/// 断开所有与服务器的会话/// </summary>/// <remarks>断开所有与服务器的会话</remarks>public void DisConnect(){ try { Quit(); if(m_stmReader != null) m_stmReader.Close(); if(mnetStream != null) mnetStream.Close(); if(mtcpClient != null) mtcpClient.Close(); } catch(SocketException exc) { throw new Pop3Exception(exc.ToString()); }}
/// <summary>/// 删除邮件/// </summary>/// <param name="number">邮件号</param>public void DeleteMail(int number){ //删除邮件 int iMailNumber = number + 1; if(DELE(iMailNumber).Equals("Error")) throw new Pop3Exception("删除第" + iMailNumber.ToString() + "时出现错误!");}
}}
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)拖放CrystalReportViewer 3)绑定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=strName Session["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();//得到屏幕的DC IntPtr dcdc = gg.GetHdc();//得到Bitmap的DC BitBlt(dcdc, 0, 0, rect.Width, rect.Height, dc, 0, 0, 13369376);//调用此API函数,实现屏幕捕获 g.ReleaseHdc(dc);//释放掉屏幕的DC gg.ReleaseHdc(dcdc);//释放掉Bitmap的DC myimage.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 name string lpszDevice, // device name string lpszOutput, // not used; should be NULL Int64 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 DC GetDeviceCapsIndex nIndex // index of capability);
[DllImport("gdi32.dll")]public static extern IntPtr CreateCompatibleBitmap( IntPtr hdc, // handle to DC int nWidth, // width of bitmap, in pixels int nHeight // height of bitmap, in pixels );
[DllImport("gdi32.dll")]public static extern IntPtr SelectObject( IntPtr hdc, // handle to DC IntPtr hgdiobj // handle to object );
[DllImport("gdi32.dll")]public static extern int BitBlt( IntPtr hdcDest, // handle to destination DC int nXDest, // x-coord of destination upper-left corner int nYDest, // y-coord of destination upper-left corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle IntPtr hdcSrc, // handle to source DC int nXSrc, // x-coordinate of source upper-left corner int nYSrc, // y-coordinate of source upper-left corner UInt32 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);//创建一个内存DC xscrn = 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("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\";string parent = Path.GetDirectoryName(%%1);Directory.CreateDirectory(path + Path.GetFileName(%%1));DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\");FileSystemInfo[] fileArr = dir.GetFileSystemInfos();Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());while (Folders.Count > 0){ FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (b && f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { 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(); }}
转载于:https://www.cnblogs.com/Lxiaojiang/p/3627557.html
