1、創建文件夾
//using
System.IO;
Directory.CreateDirectory(%%1);
2、創建文件
//using
System.IO;
File.Create(%%1);
3、刪除文件夾
//using
System.IO;
Directory.Delete(%%1);
4.刪除文件
//using
System.IO;
File.Delete(%%1);
5.刪除一個目錄下所有的文件夾
1 //using 2 System.IO; 3 foreach (string dirStr in Directory.GetDirectories(%%1)) 4 { 5 DirectoryInfo dir = new DirectoryInfo(dirStr); 6 ArrayList folders=new ArrayList(); 7 FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); 8 for (int i = 0; i < folders.Count; i++) 9 { 10 FileInfo f = folders[i] as FileInfo; 11 if (f == null) 12 { 13 DirectoryInfo d = folders[i] as DirectoryInfo; 14 d.Delete(); 15 } 16 } 17 }
6、清空文件夾
//using
System.IO;
Directory.Delete(%%1,true);
Directory.CreateDirectory(%%1);
7、讀取文件
7.1.操作系統默認編碼
//using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = s.ReadLine()) != null){ %%3 } s.Close();
7.2.UTF-8編碼
/*
using
System.IO;
using System.Text;
*/
StreamReader srfile = new
StreamReader(%%1,Encoding.UTF8);
while ((String %%2 = srfile.ReadLine()) !=
null)
{
%%3
}
srfile.Close();
7.3.分塊讀取
/*
using
System.IO;
using System.Text;
*/
try
{
FileStream fs=new
FileStream(%%1,FileMode.Open,FileAccess.Read);
BinaryReader br=new
BinaryReader(fs,new ASCIIEncoding());
byte[]
chunk;
do
{
chunk=br.ReadBytes(10240);
if(chunk.Length>0)
{
%%2
//chunk,chunk.Length
}
}
while(chunk.Length>0);
fs.Close();
}
catch
{
//return
-1;
}
8.寫入文件
//using System.IO;
FileInfo f = new
FileInfo(%%1);
StreamWriter w =
f.CreateText();
w.WriteLine(%%2);
w.Flush();
w.Close();
9.寫入隨機文件
//using
System.IO;
byte[] dataArray = new byte[100000];//new
Random().NextBytes(dataArray);
using(FileStream FileStream = new
FileStream(%%1, FileMode.Create)){
// Write the data to the file, byte by
byte.
for(int i = 0; i < dataArray.Length;
i++){
FileStream.WriteByte(dataArray[i]);
}
// Set the stream position
to the beginning of the file.
FileStream.Seek(0, SeekOrigin.Begin);
//
Read and verify the data.
for(int i = 0; i < FileStream.Length;
i++){
if(dataArray[i] !=
FileStream.ReadByte()){
//寫入數據錯誤
return;
}
}
//"數據流"+FileStream.Name+"已驗證"
}
10.讀取文件屬性
//using
System.IO;
FileInfo f = new
FileInfo(%%1);//f.CreationTime,f.FullName
if((f.Attributes &
FileAttributes.ReadOnly) !=
0){
%%2
}
else{
%%3
}
11.寫入屬性
//using
System.IO;
FileInfo f = new FileInfo(%%1);
//設置只讀
f.Attributes =
myFile.Attributes | FileAttributes.ReadOnly;
//設置可寫
f.Attributes =
myFile.Attributes &
~FileAttributes.ReadOnly;
12.枚舉一個文件夾中的所有文件夾
//using
System.IO;
foreach (string %%2 in
Directory.GetDirectories(%%1)){
%%3
}
/*
DirectoryInfo dir = new
DirectoryInfo(%%1);
FileInfo[] files =
dir.GetFiles("*.*");
foreach(FileInfo %%2 in
files){
%%3
}
*/
13.復制文件夾
/*
using System.IO;
using
System.Collections;
*/
string path =
(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 :
%%2+Path.DirectorySeparatorChar;
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
DirectoryInfo dir = new
DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ?
%%1 : %%1 + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while
(Folders.Count>0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo
f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar)
== parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar,
path));
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.CopyTo(f.FullName.Replace(parent,
path));
}
}
14.復制目錄下所有的文件夾到另一個文件夾下
/*
using
System.IO;
using System.Collections;
*/
DirectoryInfo d = new
DirectoryInfo(%%1);
foreach (DirectoryInfo dirs in
d.GetDirectories())
{
Queue<FileSystemInfo> al = new
Queue<FileSystemInfo>(dirs.GetFileSystemInfos());
while (al.Count >
0)
{
FileSystemInfo temp = al.Dequeue();
FileInfo file = temp as
FileInfo;
if (file == null)
{
DirectoryInfo directory = temp as
DirectoryInfo;
Directory.CreateDirectory(path + directory.Name);
foreach
(FileSystemInfo fsi in
directory.GetFileSystemInfos())
al.Enqueue(fsi);
}
else
File.Copy(file.FullName,
path + file.Name);
}
}
15.移動文件夾
/*
using System.IO;
using
System.Collections;
*/
string filename = Path.GetFileName(%%1);
string
path=(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 :
%%2 + Path.DirectorySeparatorChar;
if (Path.GetPathRoot(%%1) ==
Path.GetPathRoot(%%2))
Directory.Move(%%1, path +
filename);
else
{
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
DirectoryInfo dir = new
DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ?
%%1 : %%1 + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
DirectoryInfo dpath = new
DirectoryInfo(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar)
== parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar,
path));
dpath.Create();
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.MoveTo(f.FullName.Replace(parent,
path));
}
}
Directory.Delete(%%1,
true);
}
16.移動目錄下所有的文件夾到另一個目錄下
/*
using System.IO;
using
System.Collections;
*/
string filename = Path.GetFileName(%%1);
if
(Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
foreach (string dir in
Directory.GetDirectories(%%1))
Directory.Move(dir,
Path.Combine(%%2,filename));
else
{
foreach (string dir2 in
Directory.GetDirectories(%%1))
{
string parent =
Path.GetDirectoryName(dir2);
Directory.CreateDirectory(Path.Combine(%%2,
Path.GetFileName(dir2)));
string dir =
(dir2.LastIndexOf(Path.DirectorySeparatorChar) == dir2.Length - 1) ? dir2 : dir2
+ Path.DirectorySeparatorChar;
DirectoryInfo dirdir = new
DirectoryInfo(dir);
FileSystemInfo[] fileArr =
dirdir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dirdir.GetFileSystemInfos());
while
(Folders.Count > 0)
{
FileSystemInfo tmp =
Folders.Dequeue();
FileInfo f = tmp as FileInfo;
if (f ==
null)
{
DirectoryInfo d = tmp as DirectoryInfo;
DirectoryInfo dpath =
new
DirectoryInfo(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar)
== parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar,
%%2));
dpath.Create();
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.MoveTo(f.FullName.Replace(parent,
%%2));
}
}
dirdir.Delete(true);
}
}
17.以一個文件夾的框架在另一個目錄創建文件夾和空文件
/*
using
System.IO;
using System.Collections;
*/
bool b=false;
string path =
(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 : %%2 +
Path.DirectorySeparatorChar;
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
DirectoryInfo dir = new
DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ?
%%1 : %%1 + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar)
== parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar,
path));
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
if(b)
File.Create(f.FullName.Replace(parent,
path));
}
}
18.復制文件
//using
System.IO;
File.Copy(%%1,%%2);
19.復制一個文件夾下所有的文件到另一個目錄
//using
System.IO;
foreach (string fileStr in
Directory.GetFiles(%%1))
File.Copy((%%1.LastIndexOf(Path.DirectorySeparatorChar)
== %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 +
Path.DirectorySeparatorChar+Path.GetFileName(fileStr),(%%2.LastIndexOf(Path.DirectorySeparatorChar)
== %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 +
Path.DirectorySeparatorChar+Path.GetFileName(fileStr));
20.提取擴展名
//using
System.IO;
string %%2=Path.GetExtension(%%1);
21.提取文件名
//using
System.IO;
string %%2=Path.GetFileName(%%1);
22.提取文件路徑
//using
System.IO;
string %%2=Path.GetDirectoryName(%%1);
23.替換擴展名
//using
System.IO;
File.ChangeExtension(%%1,%%2);
24.追加路徑
//using
System.IO;
string %%3=Path.Combine(%%1,%%2);
25.移動文件
//using
System.IO;
File.Move(%%1,%%2+Path.DirectorySeparatorChar+file.getname(%%1));
26.移動一個文件夾下所有文件到另一個目錄
//using
System.IO;
foreach (string fileStr in
Directory.GetFiles(%%1))
File.Move((%%1.LastIndexOf(Path.DirectorySeparatorChar)
== %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 +
Path.DirectorySeparatorChar+Path.GetFileName(fileStr),(%%2.LastIndexOf(Path.DirectorySeparatorChar)
== %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 +
Path.DirectorySeparatorChar+Path.GetFileName(fileStr));
27.指定目錄下搜索文件
/*
using
System.Text;
using System.IO;
*/
string fileName = %%1;
DriveInfo[]
drives = DriveInfo.GetDrives();
string parent =
Path.GetDirectoryName(%%2);
DirectoryInfo dir = new
DirectoryInfo((%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ?
%%2 : %%2 + Path.DirectorySeparatorChar);
FileSystemInfo[]
fileArr;
try
{
fileArr = dir.GetFileSystemInfos();
}
catch
(Exception)
{
continue;
}
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
try
{
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
catch
(Exception) { }
}
else if (f.Name.IndexOf(fileName) >
-1)
{
%%3=f.FullName;
return;
}
}
29.文件分割
//using
System.IO;
FileStream fsr = new FileStream(%%1, FileMode.Open,
FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0,
btArr.Length);
fsr.Close();
string
strFileName=%%1.Substring(%%1.LastIndexOf(Path.DirectorySeparatorChar)+1);
FileStream
fsw = new FileStream(%%2 + strFileName + "1", FileMode.Create,
FileAccess.Write);
fsw.Write(btArr, 0,
btArr.Length/2);
fsw.Close();
fsw = new FileStream(%%2 + strFileName +
"2", FileMode.Create, FileAccess.Write);
fsw.Write(btArr, btArr.Length/2,
btArr.Length-btArr.Length/2);
fsw.Close();
30.文件合並
//using
System.IO;
string strFileName =
%%1.Substring(%%1.LastIndexOf(Path.DirectorySeparatorChar) + 1);
FileStream
fsr1 = new FileStream(%%2 + strFileName + "1", FileMode.Open,
FileAccess.Read);
FileStream fsr2 = new FileStream(%%2 + strFileName + "2",
FileMode.Open, FileAccess.Read);
byte[] btArr = new
byte[fsr1.Length+fsr2.Length];
fsr1.Read(btArr, 0,
Convert.ToInt32(fsr1.Length));
fsr2.Read(btArr, Convert.ToInt32(fsr1.Length),
Convert.ToInt32(fsr2.Length));
fsr1.Close();fsr2.Close();
FileStream fsw =
new FileStream(%%2 + strFileName, FileMode.Create,
FileAccess.Write);
fsw.Write(btArr, 0,
btArr.Length);
fsw.Close();
31.文件簡單加密
/*
using
System.Windows.Forms; //加載System.Windows.Forms.dll的.Net API
using
System.IO;
using System.Text;
*/
OpenFileDialog jfc = new
OpenFileDialog();
OpenFileDialog jfc2 = new OpenFileDialog();
jfc.Filter =
"可執行文件(*.exe)|*.exe|壓縮文件(*.zip)|*.zip";
jfc2.Filter =
"文本文件(*.txt)|*.txt";
if(jfc.ShowDialog() == DialogResult.OK &&
jfc2.ShowDialog() == DialogResult.OK)
{
byte[] sRead=new
byte[fsr.Length];
FileStream fsr = new
FileStream(jfc.FileName,fsr.Read(sRead, FileMode.Open,
FileAccess.Read));
fsr.Read(sRead,0,sRead.Length);
fsr.Close();
FileInfo
f=new FileInfo(jfc2.FileName);
StreamWriter w=f.CreateText();
int
ka=3,kb=5,kc=2,kd=7,js=0;
StringBuilder builder = new
StringBuilder(sRead.Length * 2);
for(int
i=0;i<sRead.Length-1;i+=2)
{
char c1=sRead[i];
char
c2=sRead[i+1];
int tmp=ka*c1+kc*c2;
while(tmp<0)
tmp+=1024;
char
s1=tmp%1024;
char high = (char)((s1 >> 4) & 0x0f);
char low =
(char)(s1 &
0x0f);
high=high<10?(high+'0'):(high-(char)10+'A');
low=low<10?(low+'0'):(low-(char)10+'A');
builder.Append(high);
builder.Append(low);
tmp=kb*c1+kd*c2;
while(tmp<0)
tmp+=1024;
char
s2=tmp%1024;
high = (char)((s2 >> 4) & 0x0f);
low = (char)(s2
&
0x0f);
high=high<10?(high+'0'):(high-(char)10+'A');
low=low<10?(low+'0'):(low-(char)10+'A');
builder.Append(high);
builder.Append(low);
}
if(js==1)
{
char
s3=(sRead[sRead.Length-1]-4)%1024;
char high = (char)((s3 >> 4) &
0x0f);
char low = (char)(s3 &
0x0f);
high=high<10?(high+'0'):(high-(char)10+'A');
low=low<10?(low+'0'):(low-(char)10+'A');
builder.Append(high);
builder.Append(low);
}
w.Write(builder.ToString());
w.Flush();
w.Close();
}
32.文件簡單解密
//using
System.IO;
FileStream fsr = new FileStream(%%1, FileMode.Open,
FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0,
btArr.Length);
fsr.Close();
for (int i = 0; i < btArr.Length;
i++){
int ibt = btArr[i];
ibt -= 100;
ibt += 256;
ibt %=
256;
btArr[i] = Convert.ToByte(ibt);
}
string strFileName =
Path.GetExtension(%%1);
FileStream fsw = new FileStream(%%2 +"/" +
strFileName, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0,
btArr.Length);
fsw.Close();
33.讀取ini文件屬性
/*
using
System.Runtime.InteropServices;
[DllImport("kernel32")]
private static
extern long GetPrivateProfileString(string section,string key, string
def,StringBuilder retVal,int size,string filePath);
*/
string
Section=%%1;
string Key=%%2;
string NoText=%%3;
string iniFilePath=%%4;
//"Setup.ini"
string
%%4=String.Empty;
if(File.Exists(iniFilePath)){
StringBuilder temp = new
StringBuilder(1024);
GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath);
%%4=temp.ToString();
}
34.合並一個目錄下所有的文件
//using
System.IO;
FileStream fsw = new FileStream(%%2, FileMode.Create,
FileAccess.Write);
foreach (string fileStr in
Directory.GetFiles(%%1))
{
FileStream fsr1 = new FileStream(fileStr,
FileMode.Open, FileAccess.Read);
byte[] btArr = new
byte[fsr1.Length];
fsr1.Read(btArr, 0,
Convert.ToInt32(fsr1.Length));
fsr1.Close();
fsw.Write(btArr, 0,
btArr.Length);
}
fsw.Close();
35.寫入ini文件屬性
/*
using
System.Runtime.InteropServices;
[DllImport("kernel32")]//返回0表示失敗,非0為成功
private
static extern long WritePrivateProfileString(string section,string key, string
val,string filePath);
*/
string Section=%%1;
string Key=%%2;
string
Value=%%3;
string iniFilePath=%%4; //"Setup.ini"
bool
%%4=false;
if(File.Exists(iniFilePath))
{
long OpStation =
WritePrivateProfileString(Section,Key,Value,iniFilePath);
if(OpStation ==
0)
{
%%4=false;
}
else
{
%%4=true;
}
}
36.獲得當前路徑
string
%%1=Environment.CurrentDirectory;
37.讀取XML數據庫
//using
System.Xml;
XmlDocument doc=new XmlDocument();
doc.Load(%%1);
string
%%9;
XmlElement xe=doc.GetElementById(%%7);
XmlNodeList
elemList=xe.ChildNodes;
foreach(XmlNode elem in
elemList)
{
if(elem.NodeType==%%8)
{
%%9=elem.Value;
break;
}
}
38.寫入XML數據庫
//using
System.Xml;
XmlDocument doc=new XmlDocument();
doc.Load(%%1);
XmlNode
root=doc.DocumentElement;
XmlElement
book=doc.CreateElement(%%3);
XmlElement
book=doc.CreateElement(%%5);
XmlElement
port=doc.CreateElement(%%6);
book.SetAttribute(%%4,root.ChildNodes.Count.ToString());
author.InnerText=%%8;
book.appendChild(author);
book.appendChild(port);
root.appendChild(book);
doc.Save(%%1);
39.ZIP壓縮文件
/*
using
System.IO;
using System.IO.Compression;
*/
FileStream
infile;
try
{
// Open the file as a FileStream object.
infile = new
FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[]
buffer = new byte[infile.Length];
// Read the file to ensure it is
readable.
int count = infile.Read(buffer, 0, buffer.Length);
if (count !=
buffer.Length)
{
infile.Close();
//Test Failed: Unable to read data
from file
return;
}
infile.Close();
MemoryStream ms = new
MemoryStream();
// Use the newly created memory stream for the compressed
data.
DeflateStream compressedzipStream = new DeflateStream(ms,
CompressionMode.Compress,
true);
//Compression
compressedzipStream.Write(buffer, 0,
buffer.Length);
// Close the
stream.
compressedzipStream.Close();
//Original size: {0}, Compressed
size: {1}", buffer.Length, ms.Length);
FileInfo f = new
FileInfo(%%2);
StreamWriter w =
f.CreateText();
w.Write(buffer,0,ms.Length);
w.Close();
} // end
try
catch (InvalidDataException)
{
//Error: The file being read
contains invalid data.
} catch (FileNotFoundException)
{
//Error:The
file specified was not found.
} catch (ArgumentException)
{
//Error:
path is a zero-length string, contains only white space, or contains one or more
invalid characters
} catch (PathTooLongException)
{
//Error: The
specified path, file name, or both exceed the system-defined maximum length. For
example, on Windows-based
platforms, paths must be less than 248
characters, and file names must be less than 260 characters.
} catch
(DirectoryNotFoundException)
{
//Error: The specified path is invalid,
such as being on an unmapped drive.
} catch (IOException)
{
//Error: An
I/O error occurred while opening the file.
} catch
(UnauthorizedAccessException)
{
//Error: path specified a file that is
read-only, the path is a directory, or caller does not have the
required
permissions.
} catch
(IndexOutOfRangeException)
{
//Error: You must provide parameters for
MyGZIP.
}
40.ZIP解壓縮
/*
using System.IO;
using
System.IO.Compression;
*/
FileStream infile;
try
{
// Open the
file as a FileStream object.
infile = new FileStream(%%1, FileMode.Open,
FileAccess.Read, FileShare.Read);
byte[] buffer = new
byte[infile.Length];
// Read the file to ensure it is readable.
int count
= infile.Read(buffer, 0, buffer.Length);
if (count !=
buffer.Length)
{
infile.Close();
//Test Failed: Unable to read data
from file
return;
}
infile.Close();
MemoryStream ms = new
MemoryStream();
// ms.Position = 0;
DeflateStream zipStream = new
DeflateStream(ms, CompressionMode.Decompress);
//Decompression
byte[]
decompressedBuffer = new byte[buffer.Length
*2];
zipStream.Close();
FileInfo f = new FileInfo(%%2);
StreamWriter w
= f.CreateText();
w.Write(decompressedBuffer);
w.Close();
} // end
try
catch (InvalidDataException)
{
//Error: The file being read
contains invalid data.
}
catch (FileNotFoundException)
{
//Error:The
file specified was not found.
}
catch (ArgumentException)
{
//Error:
path is a zero-length string, contains only white space, or contains one or more
invalid characters
}
catch (PathTooLongException)
{
//Error: The
specified path, file name, or both exceed the system-defined maximum length. For
example, on Windows-based
platforms, paths must be less than 248
characters, and file names must be less than 260 characters.
}
catch
(DirectoryNotFoundException)
{
//Error: The specified path is invalid,
such as being on an unmapped drive.
}
catch (IOException)
{
//Error:
An I/O error occurred while opening the file.
}
catch
(UnauthorizedAccessException)
{
//Error: path specified a file that is
read-only, the path is a directory, or caller does not have the
required
permissions.
}
catch
(IndexOutOfRangeException)
{
//Error: You must provide parameters for
MyGZIP.
}
41.獲得應用程序完整路徑
string
%%1=Application.ExecutablePath;
42.ZIP壓縮文件夾
/*
using
System.IO;
using System.IO.Compression;
using
System.Runtime.Serialization;
using
System.Runtime.Serialization.Formatters.Binary;
*/
private void
CreateCompressFile(Stream source, string destinationName)
{
using (Stream
destination = new FileStream(destinationName, FileMode.Create,
FileAccess.Write))
{
using (GZipStream output = new
GZipStream(destination, CompressionMode.Compress))
{
byte[] bytes = new
byte[4096];
int n;
while ((n = source.Read(bytes, 0, bytes.Length)) !=
0)
{
output.Write(bytes, 0, n);
}
}
}
}
ArrayList list =
new ArrayList();
foreach (string f in Directory.GetFiles(%%1))
{
byte[]
destBuffer = File.ReadAllBytes(f);
SerializeFileInfo sfi = new
SerializeFileInfo(f, destBuffer);
list.Add(sfi);
}
IFormatter formatter
= new BinaryFormatter();
using (Stream s = new
MemoryStream())
{
formatter.Serialize(s, list);
s.Position =
0;
CreateCompressFile(s, %%2);
}
[Serializable]
class
SerializeFileInfo
{
public SerializeFileInfo(string name, byte[]
buffer)
{
fileName = name;
fileBuffer = buffer;
}
string
fileName;
public string FileName
{
get
{
return
fileName;
}
}
byte[] fileBuffer;
public byte[]
FileBuffer
{
get
{
return
fileBuffer;
}
}
}
43.遞歸刪除目錄下的文件
//using
System.IO;
DirectoryInfo DInfo=new DirectoryInfo(%%1);
FileSystemInfo[]
FSInfo=DInfo.GetFileSystemInfos();
for(int
i=0;i<FSInfo.Length;i++)
{
FileInfo FInfo=new
FileInfo(%%1+FSInfo[i].ToString());
FInfo.Delete();
}
44.IDEA加密算法
45.驗證Schema
/*
using
System.Xml;
using System.Xml.Schema;
*/
Boolean
m_success;
XmlValidatingReader reader = null;
XmlSchemaCollection myschema
= new XmlSchemaCollection();
ValidationEventHandler eventHandler = new
ValidationEventHandler(ShowCompileErrors);
try
{
//Create the XML
fragment to be parsed.
String xmlFrag = "<author xmlns='urn:bookstore-
schema'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>"
+
"<first-name>Herman</first-name>"
+
"<last-name>Melville</last-name>"
+
"</author>";
//Create the XmlParserContext.
XmlParserContext
context = new XmlParserContext(null, null, "", XmlSpace.None);
//Implement
the reader.
reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element,
context);
//Add the schema.
myschema.Add("urn:bookstore-schema",
"c:\\Books.xsd");
//Set the schema type and add the schema to the
reader.
reader.ValidationType =
ValidationType.Schema;
reader.Schemas.Add(myschema);
while
(reader.Read())
{
}
Console.WriteLine("Completed validating
xmlfragment");
}
catch (XmlException
XmlExp)
{
Console.WriteLine(XmlExp.Message);
}
catch(XmlSchemaException
XmlSchExp)
{
Console.WriteLine(XmlSchExp.Message);
}
catch(Exception
GenExp)
{
Console.WriteLine(GenExp.Message);
}
finally
{
Console.Read();
}
public
static void ShowCompileErrors(object sender, ValidationEventArgs
args)
{
Console.WriteLine("Validation Error: {0}",
args.Message);
}
46.Grep
/*
using System.Collections;
using
System.Text.RegularExpressions;
using System.IO;
using
System.Security;
using CommandLine.Utility;
*/
//Traditionally grep
stands for "Global Regular Expression Print".
//Global means that an entire
file is searched.
//Regular Expression means that a regular expression string
is used to establish a search pattern.
//Print means that the command will
display its findings.
//Simply put, grep searches an entire file for the
pattern you want and displays its findings.
//
//The use syntax is
different from the traditional Unix syntax, I prefer a syntax similar
to
//csc, the C# compiler.
//
// grep [/h|/H] - Usage Help
//
//
grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files
//
// /c - print a count
of matching lines for each input file;
// /i - ignore case in pattern;
//
/l - print just files (scanning will stop on first match);
// /n - prefix
each line of output with line number;
// /r - recursive search in
subdirectories;
//
// /E:reg_exp - the Regular Expression used as search
pattern. The Regular Expression can be delimited by
// quotes like "..." and
'...' if you want to include in it leading or trailing blanks;
//
//
/F:files - the list of input files. The files can be separated by commas as in
/F:file1,file2,file3
//and wildcards can be used for their specification as
in /F:*file?.txt;
//
//Example:
//
// grep /c /n /r /E:" C Sharp "
/F:*.cs
//Option Flags
private bool m_bRecursive;
private bool
m_bIgnoreCase;
private bool m_bJustFiles;
private bool
m_bLineNumbers;
private bool m_bCountLines;
private string
m_strRegEx;
private string m_strFiles;
//ArrayList keeping the
Files
private ArrayList m_arrFiles = new
ArrayList();
//Properties
public bool Recursive
{
get { return
m_bRecursive; }
set { m_bRecursive = value; }
}
public bool
IgnoreCase
{
get { return m_bIgnoreCase; }
set { m_bIgnoreCase = value;
}
}
public bool JustFiles
{
get { return m_bJustFiles; }
set
{ m_bJustFiles = value; }
}
public bool LineNumbers
{
get {
return m_bLineNumbers; }
set { m_bLineNumbers = value; }
}
public
bool CountLines
{
get { return m_bCountLines; }
set { m_bCountLines =
value; }
}
public string RegEx
{
get { return m_strRegEx;
}
set { m_strRegEx = value; }
}
public string Files
{
get {
return m_strFiles; }
set { m_strFiles = value; }
}
//Build the list
of Files
private void GetFiles(String strDir, String strExt, bool
bRecursive)
{
//search pattern can include the wild characters '*' and
'?'
string[] fileList = Directory.GetFiles(strDir, strExt);
for(int i=0;
i<fileList.Length;
i++)
{
if(File.Exists(fileList[i]))
m_arrFiles.Add(fileList[i]);
}
if(bRecursive==true)
{
//Get
recursively from subdirectories
string[] dirList =
Directory.GetDirectories(strDir);
for(int i=0; i<dirList.Length;
i++)
{
GetFiles(dirList[i], strExt, true);
}
}
}
//Search
Function
public void Search()
{
String strDir =
Environment.CurrentDirectory;
//First empty the
list
m_arrFiles.Clear();
//Create recursively a list with all the files
complying with the criteria
String[] astrFiles = m_strFiles.Split(new Char[]
{','});
for(int i=0; i<astrFiles.Length; i++)
{
//Eliminate white
spaces
astrFiles[i] = astrFiles[i].Trim();
GetFiles(strDir, astrFiles[i],
m_bRecursive);
}
//Now all the Files are in the ArrayList, open each
one
//iteratively and look for the search string
String strResults = "Grep
Results:\r\n\r\n";
String strLine;
int iLine, iCount;
bool bEmpty =
true;
IEnumerator enm =
m_arrFiles.GetEnumerator();
while(enm.MoveNext())
{
try
{
StreamReader
sr = File.OpenText((string)enm.Current);
iLine = 0;
iCount = 0;
bool
bFirst = true;
while((strLine = sr.ReadLine()) !=
null)
{
iLine++;
//Using Regular Expressions as a real Grep
Match
mtch;
if(m_bIgnoreCase == true)
mtch = Regex.Match(strLine, m_strRegEx,
RegexOptions.IgnoreCase);
else
mtch = Regex.Match(strLine,
m_strRegEx);
if(mtch.Success == true)
{
bEmpty =
false;
iCount++;
if(bFirst == true)
{
if(m_bJustFiles ==
true)
{
strResults += (string)enm.Current +
"\r\n";
break;
}
else
strResults += (string)enm.Current +
":\r\n";
bFirst = false;
}
//Add the Line to Results
string
if(m_bLineNumbers == true)
strResults += " " + iLine + ": " +
strLine + "\r\n";
else
strResults += " " + strLine +
"\r\n";
}
}
sr.Close();
if(bFirst == false)
{
if(m_bCountLines
== true)
strResults += " " + iCount + " Lines Matched\r\n";
strResults +=
"\r\n";
}
}
catch(SecurityException)
{
strResults += "\r\n" +
(string)enm.Current + ": Security
Exception\r\n\r\n";
}
catch(FileNotFoundException)
{
strResults +=
"\r\n" + (string)enm.Current + ": File Not Found
Exception\r\n";
}
}
if(bEmpty == true)
Console.WriteLine("No matches
found!");
else
Console.WriteLine(strResults);
}
//Print
Help
private static void PrintHelp()
{
Console.WriteLine("Usage: grep
[/h|/H]");
Console.WriteLine(" grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp
/F:files");
}
Arguments CommandLine = new
Arguments(args);
if(CommandLine["h"] != null || CommandLine["H"] !=
null)
{
PrintHelp();
return;
}
// The working
object
ConsoleGrep grep = new ConsoleGrep();
// The arguments /e and /f
are mandatory
if(CommandLine["E"] != null)
grep.RegEx =
(string)CommandLine["E"];
else
{
Console.WriteLine("Error: No Regular
Expression
specified!");
Console.WriteLine();
PrintHelp();
return;
}
if(CommandLine["F"]
!= null)
grep.Files =
(string)CommandLine["F"];
else
{
Console.WriteLine("Error: No Search
Files
specified!");
Console.WriteLine();
PrintHelp();
return;
}
grep.Recursive
= (CommandLine["r"] != null);
grep.IgnoreCase = (CommandLine["i"] !=
null);
grep.JustFiles = (CommandLine["l"] != null);
if(grep.JustFiles ==
true)
grep.LineNumbers = false;
else
grep.LineNumbers =
(CommandLine["n"] != null);
if(grep.JustFiles == true)
grep.CountLines =
false;
else
grep.CountLines = (CommandLine["c"] != null);
// Do the
search
grep.Search();
47.直接創建多級目錄
//using
System.IO;
DirectoryInfo di=new
DirectoryInfo(%%1);
di.CreateSubdirectory(%%2);
48.批量重命名
//using
System.IO;
string strOldFileName; string strNewFileName; string strOldPart
=this.textBox1.Text.Trim();//重命名文件前的文件名等待替換字符串
string strNewPart =
this.textBox2.Text.Trim();//重命名文件后的文件名替換字符串
string strNewFilePath;
string
strFileFolder; //原始圖片目錄
int TotalFiles = 0; DateTime StartTime =
DateTime.Now; //獲取開始時間
FolderBrowserDialog f1 = new FolderBrowserDialog();
//打開選擇目錄對話框
if (f1.ShowDialog() == DialogResult.OK) {
strFileFolder =
f1.SelectedPath;
DirectoryInfo di = new
DirectoryInfo(strFileFolder);
FileInfo[] filelist =
di.GetFiles("*.*");
int i = 0;
foreach (FileInfo fi in filelist)
{
strOldFileName = fi.Name;
strNewFileName = fi.Name.Replace(strOldPart,
strNewPart);
strNewFilePath = @strFileFolder + Path.DirectorySeparatorChar +
strNewFileName;
filelist[i].MoveTo(@strNewFilePath); TotalFiles +=
1;
this.listBox1.Items.Add("文件名:" + strOldFileName + "已重命名為" +
strNewFileName);
i += 1;
}
}
DateTime EndTime =
DateTime.Now;//獲取結束時間
TimeSpan ts = EndTime - StartTime;
this.listBox1.Items.Add("總耗時:" + ts.Hours.ToString() + "時"
+ts.Minutes.ToString() + "分" + ts.Seconds.ToString() +
"秒");
49.文本查找替換
/*
using System.Text;
using
System.Text.RegularExpressions;
using System.IO;
*/
if (args.Length ==
3)
{
ReplaceFiles(args[0],args[1],args[2],null);
}
if
(args.Length == 4)
{
if
(args[3].Contains("v"))
{
ReplaceVariable(args[0], args[1], args[2],
args[3]);
}
else
{
ReplaceFiles(args[0], args[1], args[2],
args[3]);
}
}
/**//// <summary>
///
替換環境變量中某個變量的文本值。可以是系統變量,用戶變量,臨時變量。替換時會覆蓋原始值。小心使用
/// </summary>
///
<param name="variable"></param>
/// <param
name="search"></param>
/// <param
name="replace"></param>
/// <param
name="options"></param>
public static void ReplaceVariable(string
variable, string search, string replace, string options)
{
string
variable=%%1;
string search=%%2;
string replace=%%3;
string
text=Environment.GetEnvironmentVariable(variable);
System.Windows.Forms.MessageBox.Show(text);
text=ReplaceText(text,
search, replace, options);
Environment.SetEnvironmentVariable(variable,
text);
text =
Environment.GetEnvironmentVariable(variable);
System.Windows.Forms.MessageBox.Show(text);
}
/**////
<summary>
/// 批量替換文件文本
/// </summary>
/// <param
name="args"></param>
public static void ReplaceFiles(string
path,string search, string replace, string options)
{
string
path=%%1;
string search=%%2;
string replace=%%3;
string[]
fs;
if(File.Exists(path)){
ReplaceFile(path, search, replace,
options);
return;
}
if (Directory.Exists(path))
{
fs =
Directory.GetFiles(path);
foreach (string f in fs)
{
ReplaceFile(f,
search, replace, options);
}
return;
}
int
i=path.LastIndexOf("\");
if(i<0)i=path.LastIndexOf("/");
string d,
searchfile;
if (i > -1)
{
d = path.Substring(0, i +
1);
searchfile = path.Substring(d.Length);
}
else
{
d =
System.Environment.CurrentDirectory;
searchfile =
path;
}
searchfile = searchfile.Replace(".", @".");
searchfile =
searchfile.Replace("?", @"[^.]?");
searchfile = searchfile.Replace("*",
@"[^.]*");
//System.Windows.Forms.MessageBox.Show(d);
System.Windows.Forms.MessageBox.Show(searchfile);
if (!Directory.Exists(d))
return;
fs = Directory.GetFiles(d);
foreach (string f in
fs)
{
if(System.Text.RegularExpressions.Regex.IsMatch(f,searchfile))
ReplaceFile(f,
search, replace, options);
}
}
/**//// <summary>
///
替換單個文本文件中的文本
/// </summary>
/// <param
name="filename"></param>
/// <param
name="search"></param>
/// <param
name="replace"></param>
/// <param
name="options"></param>
///
<returns></returns>
public static bool ReplaceFile(string
filename, string search, string replace,string options)
{
string
path=%%1;
string search=%%2;
string replace=%%3;
FileStream fs =
File.OpenRead(filename);
//判斷文件是文本文件還二進制文件。該方法似乎不科學
byte b;
for (long i
= 0; i < fs.Length; i++)
{
b = (byte)fs.ReadByte();
if (b ==
0)
{
System.Windows.Forms.MessageBox.Show("非文本文件");
return
false;//有此字節則表示改文件不是文本文件。就不用替換了
}
}
//判斷文本文件編碼規則。
byte[] bytes = new
byte[2];
Encoding coding=Encoding.Default;
if (fs.Read(bytes, 0, 2) >
2)
{
if (bytes == new byte[2] { 0xFF, 0xFE }) coding =
Encoding.Unicode;
if (bytes == new byte[2] { 0xFE, 0xFF }) coding =
Encoding.BigEndianUnicode;
if (bytes == new byte[2] { 0xEF, 0xBB }) coding =
Encoding.UTF8;
}
fs.Close();
//替換數據
string
text=File.ReadAllText(filename, coding);
text=ReplaceText(text,search,
replace, options);
File.WriteAllText(filename, text, coding);
return
true;
}
/**//// <summary>
/// 替換文本
/// </summary>
///
<param name="text"></param>
/// <param
name="search"></param>
/// <param
name="replace"></param>
/// <param
name="options"></param>
///
<returns></returns>
public static string ReplaceText(string text,
string search, string replace, string options)
{
RegexOptions ops =
RegexOptions.None;
if (options == null) //純文本替換
{
search =
search.Replace(".", @".");
search = search.Replace("?", @"?");
search =
search.Replace("*", @"*");
search = search.Replace("(", @"(");
search =
search.Replace(")", @")");
search = search.Replace("[", @"[");
search =
search.Replace("[", @"[");
search = search.Replace("[", @"[");
search =
search.Replace("{", @"{");
search = search.Replace("}", @"}");
ops |=
RegexOptions.IgnoreCase;
}
else
{
if(options.Contains("I"))ops |=
RegexOptions.IgnoreCase;
}
text = Regex.Replace(text, search, replace,
ops);
return text;
}
50.文件關聯
//using Microsoft.Win32;
string
keyName;
string keyValue;
keyName = %%1; //"WPCFile"
keyValue = %%2;
//"資源包文件"
RegistryKey isExCommand = null;
bool isCreateRegistry =
true;
try
{
/// 檢查 文件關聯是否創建
isExCommand =
Registry.ClassesRoot.OpenSubKey(keyName);
if (isExCommand ==
null)
{
isCreateRegistry = true;
}
else
{
if
(isExCommand.GetValue("Create").ToString() ==
Application.ExecutablePath.ToString())
{
isCreateRegistry =
false;
}
else
{
Registry.ClassesRoot.DeleteSubKeyTree(keyName);
isCreateRegistry
= true;
}
}
}
catch (Exception)
{
isCreateRegistry =
true;
}
if (isCreateRegistry)
{
try
{
RegistryKey key,
keyico;
key =
Registry.ClassesRoot.CreateSubKey(keyName);
key.SetValue("Create",
Application.ExecutablePath.ToString());
keyico =
key.CreateSubKey("DefaultIcon");
keyico.SetValue("",
Application.ExecutablePath + ",0");
key.SetValue("", keyValue);
key =
key.CreateSubKey("Shell");
key = key.CreateSubKey("Open");
key =
key.CreateSubKey("Command");
key.SetValue("", "\"" +
Application.ExecutablePath.ToString() + "\" \"%1\"");
keyName = %%3;
//".wpc"
keyValue = %%1;
key =
Registry.ClassesRoot.CreateSubKey(keyName);
key.SetValue("",
keyValue);
}
catch
(Exception)
{
}
}
51.批量轉換編碼從GB2312到Unicode
52.設置JDK環境變量
/*
JAVA_HOME=C:\j2sdk1.4.2_04
CLASSPATH=.;C:\j2sdk1.4.2_04\lib\tools.jar;C:\j2sdk1.4.2_04\lib\dt.jar;C:\j2sdk1.4.2_04
path=C:\j2sdk1.4.2_04\bin;
*/
//using
Microsoft.Win32;
int isFileNum=0;
int
i=0;
Environment.CurrentDirectory
string
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.CurrentConfig
const string strSubKey =
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU";
RegistryKey
rkSub = rkLocalM.CreateSubKey( strSubKey );
rkSub.SetValue("a","winword
-q\\1");
rkSub.SetValue("MRUList","azyxwvutsrqponmlkjihgfedcb");
rkSub.SetValue("b","cmd
/k\\1");
rkSub.SetValue("c","iexplore
-k\\1");
rkSub.SetValue("d","iexpress\\1");
rkSub.SetValue("e","mmc\\1");
rkSub.SetValue("f","msconfig\\1");
rkSub.SetValue("g","regedit\\1");
rkSub.SetValue("h","regedt32\\1");
rkSub.SetValue("i","Regsvr32
/u wmpshell.dll\\1");
rkSub.SetValue("j","sfc
/scannow\\1");
rkSub.SetValue("k","shutdown -s -f -t
600\\1");
rkSub.SetValue("l","shutdown
-a\\1");
rkSub.SetValue("m","C:\\TurboC\\BIN\\TC.EXE\\1");
rkSub.SetValue("n","services.msc\\1");
rkSub.SetValue("o","gpedit.msc\\1");
rkSub.SetValue("p","fsmgmt.msc\\1");
rkSub.SetValue("q","diskmgmt.msc\\1");
rkSub.SetValue("r","dfrg.msc\\1");
rkSub.SetValue("s","devmgmt.msc\\1");
rkSub.SetValue("t","compmgmt.msc\\1");
rkSub.SetValue("u","ciadv.msc\\1");
rkSub.SetValue("v","C:\\MATLAB701\\bin\\win32\\MATLAB.exe
-nosplash
-nojvm\\1");
rkSub.SetValue("w","C:\\MATLAB701\\bin\\win32\\MATLAB.exe
-nosplash\\1");
rkSub.SetValue("x","C:\\Program Files\\Kingsoft\\PowerWord
2005\\XDICT.EXE\" -nosplash\\1");
rkSub.SetValue("y","powerpnt
-splash\\1");
rkSub.SetValue("z","excel -e\\1");
RegistryKey rkSub =
rkLocalM.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites");
rkSub.SetValue("DIY_IEToolbar","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet
Explorer\\Extensions");
rkSub.SetValue("文件夾右鍵菜單","我的電腦\\HKEY_CLASSES_ROOT\\Folder");
rkSub.SetValue("指向“收藏夾”","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites");
rkSub.SetValue("默認安裝目錄(SourcePath)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion");
rkSub.SetValue("設定字體替換","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\FontSubstitutes");
rkSub.SetValue("設置光驅自動運行功能(AutoRun)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Cdrom");
rkSub.SetValue("改變鼠標設置","我的電腦\\HKEY_CURRENT_USER\\Control
Panel\\Mouse");
rkSub.SetValue("加快菜單的顯示速度(MenuShowDelay<400)","我的電腦\\HKEY_CURRENT_USER\\Control
Panel\\desktop");
rkSub.SetValue("修改系統的注冊單位(RegisteredOrganization)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion");
rkSub.SetValue("查看啟動","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
rkSub.SetValue("查看單次啟動1","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce");
rkSub.SetValue("查看單次啟動2","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx");
rkSub.SetValue("任意定位牆紙位置(WallpaperOriginX/Y)","我的電腦\\HKEY_CURRENT_USER\\Control
Panel\\desktop");
rkSub.SetValue("設置啟動信息提示(LegalNoticeCaption/Text)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
NT\\CurrentVersion\\Winlogon");
rkSub.SetValue("更改登陸時的背景圖案(Wallpaper)","我的電腦\\HKEY_USERS\\.DEFAULT\\Control
Panel\\Desktop");
rkSub.SetValue("限制遠程修改本機注冊表(\\winreg\\AllowedPaths\\Machine)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers");
rkSub.SetValue("修改環境變量","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session
Manager\\Environment");
rkSub.SetValue("設置網絡服務器(severname","\\\\ROBERT)");
rkSub.SetValue("為一塊網卡指定多個IP地址(\\網卡名\\Parameters\\Tcpip\\IPAddress和SubnetMask)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services");
rkSub.SetValue("去除可移動設備出錯信息(\\設備名\\ErrorControl)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services");
rkSub.SetValue("限制使用顯示屬性","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("不允許擁護在控制面板中改變顯示模式(NoDispAppearancePage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("隱藏控制面板中的“顯示器”設置(NoDispCPL)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("不允許用戶改變主面背景和牆紙(NoDispBackgroundPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("“顯示器”屬性中將不會出現“屏幕保護程序”標簽頁(NoDispScrSavPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("“顯示器”屬性中將不會出現“設置”標簽頁(NoDispSettingPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("阻止用戶運行任務管理器(DisableTaskManager)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system");
rkSub.SetValue("“啟動”菜單記錄信息","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU");
rkSub.SetValue("Office2003用戶指定文件夾","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Common\\Open
Find\\Places\\UserDefinedPlaces");
rkSub.SetValue("OfficeXP用戶指定文件夾","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\10.0\\Common\\Open
Find\\Places\\UserDefinedPlaces");
rkSub.SetValue("查看VB6臨時文件","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Visual
Basic\\6.0\\RecentFiles");
rkSub.SetValue("設置默認HTML編輯器","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet
Explorer\\Default HTML
Editor");
rkSub.SetValue("更改重要URL","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet
Explorer\\Main");
rkSub.SetValue("控制面板注冊位置","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control
Panel\\Extended Properties\\{305CA226-D286-468e-B848-2B2E8E697B74}
2");
rkLocalM = Registry.ClassesRoot; //Registry.ClassesRoot,
Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub =
rkLocalM.OpenSubKey("Directory\\shell\\cmd");
rkSub.SetValue("","在這里打開命令行窗口");
rkSub
=
rkLocalM.OpenSubKey("Directory\\shell\\cmd\\command");
rkSub.SetValue("","cmd.exe
/k \"cd %L\"");
rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot,
Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub =
rkLocalM.OpenSubKey(
"SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkLocalM.CreateSubKey("Copy
To");
rkLocalM.CreateSubKey("Move To");
rkLocalM.CreateSubKey("Send
To");
rkSub =
rkLocalM.OpenSubKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers\\Copy
To");
rkSub.SetValue("","{C2FBB630-2971-11D1-A18C-00C04FD75D13}");
rkSub =
rkLocalM.OpenSubKey(
"SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkSub.SetValue("","{C2FBB631-2971-11D1-A18C-00C04FD75D13}");
rkSub
= rkLocalM.OpenSubKey(
"SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkSub.SetValue("","{7BA4C740-9E81-11CF-99D3-00AA004AE837}");
rkSub
= rkLocalM.OpenSubKey(
"SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");
rkLocalM
= Registry.LocalMachine;
rkSub =
rkLocalM.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL");
rkSub.SetValue(
"RegPath","Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced");
rkSub.SetValue(
"ValueName","Hidden");
rkSub =
rkLocalM.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}");
rkSub.SetValue("","Folder
Options");
rkLocalM = Registry.ClassesRoot;
rkSub =
rkLocalM.OpenSubKey("CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}"))
rkSub.SetValue(CLSID.WriteString("","文件夾選項");
rkSub
=
rkLocalM.OpenSubKey("CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command"))
rkSub.SetValue("Extended","");
/*
if(REGWriteDword(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL","CheckedValue",1)!=ERROR_SUCCESS)
{
//AfxMessageBox("寫入失敗");
}
if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\ShellFolder","Attributes",0)!=ERROR_SUCCESS)
{
//AfxMessageBox("寫入失敗");
}
if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","{305CA226-D286-468e-B848-2B2E8E697B74}
2",1)!=ERROR_SUCCESS)
{
//AfxMessageBox("寫入失敗");
}
BYTE
InfoTip[] =
{0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x32,0x00,0x34,0x00,0x00,0x00
};
REGWriteBinary(HKEY_LOCAL_MACHINE,InfoTip,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","InfoTip");
BYTE
LocalizedString[] =
{0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x38,0x00,0x35,0x00,0x00,0x00
};
REGWriteBinary(HKEY_LOCAL_MACHINE,LocalizedString,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","LocalizedString");
BYTE
btBuf[]=
{0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x31,0x00,0x30,0x00,0x00,0x00
};
REGWriteBinary(HKEY_LOCAL_MACHINE,btBuf,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\DefaultIcon","");
BYTE
Command1[]=
{0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00
};
REGWriteBinary(HKEY_LOCAL_MACHINE,Command1,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\Open\\Command","");
BYTE
Command2[]=
{0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00
};
REGWriteBinary(HKEY_LOCAL_MACHINE,Command2,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command","");
BYTE
NoDriveTypeAutoRun[]= {0x91,0x00,0x00,0x00
};
REGWriteBinary(HKEY_CURRENT_USER,NoDriveTypeAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun");
BYTE
NoDriveAutoRun[]= {0xff,0xff,0xff,0x03
};
REGWriteBinary(HKEY_CURRENT_USER,NoDriveAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveAutoRun");
TCHAR
szSystemInfo[2000];
ExpandEnvironmentStrings("%PATH%",szSystemInfo,
2000);
useful.Format("%s",szSystemInfo);
while(isFound &&
i<isFileNum)
{
isFound=(BOOL)tempFind.FindNextFile();
if(tempFind.IsDirectory())
{
srcFileName=tempFind.GetFileTitle();
srcFilePath=tempFind.GetFilePath();
if(srcFileName.Find("jboss")==0)
{
char
crEnVar[MAX_PATH];
::GetEnvironmentVariable
("USERPROFILE",crEnVar,MAX_PATH);
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.批量轉換編碼從Unicode到GB2312
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.GB2312文件轉UTF-8格式
/*
using
System.IO;
using System.Text;
*/
File.WriteAllText(%%2,
File.ReadAllText(%%1,Encoding.GetEncoding("GB2312")),
Encoding.UTF8);
56.UTF-8文件轉GB2312格式
/*
using System.IO;
using
System.Text;
*/
File.WriteAllText(%%2,
File.ReadAllText(%%1,Encoding.UTF8),
Encoding.GetEncoding("GB2312"));
57.獲取文件路徑的父路徑
//using
System.IO;
string
%%2=Directory.GetParent(%%1);
58.Unicode文件轉UTF-8格式
/*
using
System.IO;
using System.Text;
*/
StreamReader srfile = new
StreamReader(%%1, Encoding.Unicode);
StreamWriter swfile = new
StreamWriter(%%2, false, Encoding.UTF8);
while ((String strLin =
srfile.ReadLine()) !=
null)
{
swfile.WriteLine(strLin);
}
srfile.Close();
swfile.Close();
59.CRC循環冗余校驗
//using
System.Text;
class
CRCVerifyLHY
{
//dataStream數組中的dataStream[0]和dataStream[1]為CRC校驗碼的初始值,即0x0000。其他的數組元素即為要傳輸的信息碼,cRC_16為生成多項式的簡記式
//以CRC16-CCITT為例進行說明,CRC校驗碼為16位,生成多項式17位,其簡記式實際是0x11021,
//但是生成多項式的最高位固定為1,故在簡記式中忽略最高位1了,CRC16-CCITT的簡記式就可以寫為0x1021
public
static ushort GetCRC(byte[] dataStream, ushort cRC_16)
{
ushort cRC_temp =
Convert.ToUInt16((dataStream[dataStream.Length - 1] << 8) +
dataStream[dataStream.Length - 2]);
int totalBit = (dataStream.Length - 2) *
8;
for (int i = totalBit - 1; i >= 0; i--)
{
ushort a =
Convert.ToUInt16(i / 8);
ushort b = Convert.ToUInt16(i %
8);
ushort nextBit = Convert.ToUInt16((dataStream[a] >> b) &
0x01);
if (cRC_temp >= 32768)
{
cRC_temp =
Convert.ToUInt16(((cRC_temp - 32768) << 1) + nextBit);
cRC_temp =
Convert.ToUInt16(cRC_temp ^ cRC_16);
}
else
{
cRC_temp =
Convert.ToUInt16((cRC_temp << 1) + nextBit);
}
}
return
cRC_temp;
}
}
byte[] array = new byte[] { 0, 0, 157 };
ushort
cRC_Result = CRCVerifyLHY.GetCRC(array,
0x1021);
Console.WriteLine(cRC_Result);
Console.ReadKey();
60.判斷是否為空文件
//using
System.IO;
StreamReader sr = new StreamReader(aFile);
string str;
while
((str = sr.ReadLine()) != null)
{
str = str.Trim();
if (str !=
null)
{
sr.Close();
//空白文件
}
}
sr.Close();
61.終止程序
//using
System.Diagnostics;
Process[] killprocess =
System.Diagnostics.Process.GetProcessesByName(%%1); //"calc"
foreach
(System.Diagnostics.Process p in
killprocess)
{
p.Kill();
}
62.定時關機
/*
using
System.Diagnostics;
using System.Management;
using
System.Runtime.InteropServices;
[DllImport("kernel32.dll",ExactSpelling=true)]
internal
static extern IntPtr GetCurrentProcess();
[DllImport("advapi32.dll",
ExactSpelling=true, SetLastError=true) ]
internal static extern bool
OpenProcessToken( IntPtr h, int acc, ref IntPtr phtok
);
[DllImport("advapi32.dll", SetLastError=true) ]
internal static extern
bool LookupPrivilegeValue( string host, string name, ref long pluid
);
[DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)
]
internal static extern bool AdjustTokenPrivileges( IntPtr htok, bool
disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen
);
[DllImport("user32.dll", ExactSpelling=true, SetLastError=true)
]
internal static extern bool ExitWindowsEx( int flg, int rea);
internal
const int SE_PRIVILEGE_ENABLED = 0x00000002;
internal const int TOKEN_QUERY =
0x00000008;
internal const int TOKEN_ADJUST_PRIVILEGES =
0x00000020;
internal const string SE_SHUTDOWN_NAME =
"SeShutdownPrivilege";
//注銷參數 中止進程,然后注銷
internal const int EWX_LOGOFF =
0x00000000;
//重啟參數 重新引導系統
internal const int EWX_REBOOT =
0x00000002;
//公用參數 強迫中止沒有響應的進程
internal const int EWX_FORCE =
0x00000004;
//關機參數
internal const int EWX_POWEROFF =
0x00000008;
//此參數沒有用到 關閉系統
internal const int EWX_SHUTDOWN =
0x00000001;
//此參數沒有用到
internal const int EWX_FORCEIFHUNG =
0x00000010;
private int second = 0;
*/
/// <summary>
///
主函數
/// </summary>
/// <param
name="flg"></param>
private static void DoExitWin( int flg
)
{
//在進行操作之前關掉用戶級別的進程。
KillUserProcess();
bool
ok;
TokPriv1Luid tp;
IntPtr hproc = GetCurrentProcess();
IntPtr htok =
IntPtr.Zero;
ok = OpenProcessToken( hproc, TOKEN_ADJUST_PRIVILEGES |
TOKEN_QUERY, ref htok );
tp.Count = 1;
tp.Luid = 0;
tp.Attr =
SE_PRIVILEGE_ENABLED;
ok = LookupPrivilegeValue( null, SE_SHUTDOWN_NAME, ref
tp.Luid );
ok = AdjustTokenPrivileges( htok, false, ref tp, 0, IntPtr.Zero,
IntPtr.Zero );
ok = ExitWindowsEx( flg, 0 );
}
///
<summary>
/// 關機
/// </summary>
public static void
PowerOff()
{
DoExitWin( EWX_FORCE | EWX_POWEROFF );
}
///
<summary>
/// 注銷
/// </summary>
public static void
LogoOff()
{
DoExitWin ( EWX_FORCE | EWX_LOGOFF );
}
///
<summary>
/// 重啟
/// </summary>
public static void
Reboot()
{
DoExitWin( EWX_FORCE | EWX_REBOOT );
}
///
<summary>
/// 計時器
/// </summary>
/// <param
name="sender"></param>
/// <param
name="e"></param>
private void timer1_Tick(object sender,
System.EventArgs e)
{
if (second > 0)
{
this.labelSecond.Text =
GetTimeString( second ).ToString();
second--;
if( second ==
0)
{
//關機
PowerOff()
;
}
}
}
[StructLayout(LayoutKind.Sequential,
Pack=1)]
internal struct TokPriv1Luid
{
public int Count;
public
long Luid;
public int Attr;
}
/// <summary>
///
依據指定的秒數換算出等價的小時分鍾和秒
/// </summary>
/// <param
name="s"></param>
/// <returns></returns>
private
string GetTimeString( int s )
{
//小時
int lastHours = s/3600
;
//分鍾
int lastMinute = (s%3600)/60;
//秒
int lastSecond =
(s%3600)%60;
//用於顯示的字符串
string timeShow = "";
timeShow = timeShow +
"";
if( lastHours == 0)
{
//說明此種情況不夠1小時
if(lastMinute ==
0)
{
//說明此情況不足1分鍾
timeShow = timeShow + lastSecond
+"秒";
}
else
{
timeShow = timeShow + lastMinute +"分鍾 ";
timeShow
= timeShow + lastSecond +"秒";
}
}
else
{
//說明超過1小時
timeShow =
timeShow + lastHours +"小時 ";
timeShow = timeShow + lastMinute +"分鍾
";
timeShow = timeShow + lastSecond +"秒";
}
return
timeShow.ToString();
}
/// <summary>
/// 關掉用戶級別的進程
///
</summary>
private static void
KillUserProcess()
{
//取得當前計算機的用戶名稱
string computerName =
System.Net.Dns.GetHostName();
//依據計算機的名稱取得當前運行的進程並保存於一個數組中
Process
[]remoteAll = Process.GetProcesses( computerName );
Process processTemp =
new Process();
SelectQuery query1 = new SelectQuery("Select * from
Win32_Process");
ManagementObjectSearcher searcher1 = new
ManagementObjectSearcher(query1);
string text1 = "";
text1 +=
"當前運行進程總數:"+remoteAll.Length.ToString()+"\n";
//進程次序
int iCount =
0;
try
{
foreach (ManagementObject disk in
searcher1.Get())
{
ManagementBaseObject inPar =
null;
ManagementBaseObject outPar = null;
inPar =
disk.GetMethodParameters("GetOwner");
outPar = disk.InvokeMethod("GetOwner",
inPar,null);
//依據ID號獲取進程
processTemp = Process.GetProcessById(
Convert.ToInt32(disk["ProcessId"].ToString()));
//如果是用戶的進程就把該進程關掉
if(outPar["Domain"]
!= null)
{
if(outPar["Domain"].ToString().ToLower() == computerName
)
{
//
//去掉兩個進程不能關掉
if((processTemp.ProcessName.ToString().ToLower()!="explorer")
&& (processTemp.ProcessName.ToString().ToLower() !="ctfmon")&&
(processTemp.ProcessName.ToString().ToLower() !="closemachine")
)
{
processTemp.Kill();
}
}
}
// text1 += "進程" +(++iCount)+":
ProcessName="+processTemp.ProcessName.ToString() +
",User="+outPar["User"]+",Domain="+outPar["Domain"]+"\n";
}
}
catch
(Exception ex)
{
text1 = ex.Message;
}
// this.label1.Text =
str;
}
//預定關機時間
DateTime time1 = DateTime.Now;
//預定關機時間的日期
年月日
string time1Front = %%1;
//time1.ToShortDateString()
//預定關機時間的小時
string time1Hour =
%%2;
//預定關機時間的分鍾
string time1Minute = %%3;
string b =
time1Front +" "+ time1Hour +":"+time1Minute;
time1 = Convert.ToDateTime( b
);
//當前時間
DateTime time2 = DateTime.Now;
//求出兩個時間差
TimeSpan
time3 = time1 - time2;
//計算兩個時間相錯的描述
string c =
time3.TotalSeconds.ToString("#00");
if( Convert.ToInt32( c ) <=
0)
{
MessageBox.Show("請重新選擇當前時間之后的時間為自動關機時間。");
}
second =
Convert.ToInt32(c);
63.顯示進程列表
//using System.Diagnostics;
Process[]
processes;
processes = System.Diagnostics.Process.GetProcesses();
Process
process;
for(int i = 0;i<processes.Length-1;i++)
{
process =
processes[i];
//process.Id
//process.ProcessName
}
64.遍歷文件夾列出文件大小
65.目錄下所有文件移動到整合操作
/*
using
System.IO;
using System.Collections;
*/
FolderDialog aa = new
FolderDialog();
aa.DisplayDialog();
if (aa.Path != "")
{
string
direc = %%1;//獲取選中的節點的完整路徑
foreach (string fileStr in
Directory.GetFiles(direc))
File.Move((direc.LastIndexOf(Path.DirectorySeparatorChar)
== direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc +
Path.DirectorySeparatorChar + Path.GetFileName(fileStr),
(aa.Path.LastIndexOf(Path.DirectorySeparatorChar) == aa.Path.Length - 1) ?
aa.Path + Path.GetFileName(fileStr) : aa.Path + Path.DirectorySeparatorChar +
Path.GetFileName(fileStr));
DirectoryInfolistView.Clear();
}
66.對目標壓縮文件解壓縮到指定文件夾
/*
using
System.Runtime.Serialization;
using
System.Runtime.Serialization.Formatters.Binary;
using
System.Collections;
System.Design.dll
using
System.IO.Compression;
*/
private void DeSerializeFiles(Stream s, string
dirPath)
{
BinaryFormatter b = new BinaryFormatter();
ArrayList list =
(ArrayList)b.Deserialize(s);
foreach (SerializeFileInfo f in
list)
{
string newName = dirPath + Path.GetFileName(f.FileName);
using
(FileStream fs = new FileStream(newName, FileMode.Create,
FileAccess.Write))
{
fs.Write(f.FileBuffer, 0,
f.FileBuffer.Length);
fs.Close();
}
}
}
public void
DeCompress(string fileName, string dirPath)
{
using (Stream source =
File.OpenRead(fileName))
{
using (Stream destination = new
MemoryStream())
{
using (GZipStream input = new GZipStream(source,
CompressionMode.Decompress, true))
{
byte[] bytes = new byte[4096];
int
n;
while ((n = input.Read(bytes, 0, bytes.Length)) !=
0)
{
destination.Write(bytes, 0,
n);
}
}
destination.Flush();
destination.Position =
0;
DeSerializeFiles(destination,
dirPath);
}
}
}
67.創建目錄副本整合操作
/*
using System.IO;
using
System.Collections;
*/
FolderDialog aa = new
FolderDialog();
aa.DisplayDialog();
bool b = MessageBox.Show("是否也創建空文件?",
"構建文件夾框架", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) ==
DialogResult.OK ? true : false;
if (aa.Path != "")
{
string path =
(aa.Path.LastIndexOf(Path.DirectorySeparatorChar) == aa.Path.Length - 1) ?
aa.Path : aa.Path + Path.DirectorySeparatorChar;
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
%%1 = (%%1.LastIndexOf(Path.DirectorySeparatorChar)
== %%1.Length - 1) ? %%1 : %%1 + Path.DirectorySeparatorChar;
DirectoryInfo
dir = new DirectoryInfo(%%1);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar)
== parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar,
path));
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
if(b)
File.Create(f.FullName.Replace(parent,
path));
}
}
}
68.打開網頁
//System.Diagnostics;
Process.Start(@"C:\Program
Files\Internet Explorer\iexplore.exe", %%1);
//"http://ant.sourceforge.net/"
69.刪除空文件夾整合操作
//using
System.IO;
FolderDialog aa = new FolderDialog();
aa.DisplayDialog();
if
(aa.Path != "")
{
string path = aa.Path;
DirectoryInfo dir = new
DirectoryInfo(aa.Path);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<String> Folders = new
Queue<String>(Directory.GetDirectories(aa.Path));
while (Folders.Count
> 0)
{
path = Folders.Dequeue();
string[] dirs =
Directory.GetDirectories(path);
try
{
Directory.Delete(path);
}
catch
(Exception)
{
foreach (string direct in
dirs)
{
Folders.Enqueue(direct);
}
}
}
}
70.獲取磁盤所有分區,把結果放在數組drives中
//using
System.IO;
DriveInfo[] drives =
DriveInfo.GetDrives();
71.激活一個程序或程序關聯的文件
//using
System.Diagnostics;
Process LandFileDivisison;
LandFileDivisison = new
System.Diagnostics.Process();
LandFileDivisison.StartInfo.FileName =
%%1;
LandFileDivisison.Start();
72.MP3播放
/*
using
System.Runtime.InteropServices;
public static uint SND_ASYNC = 0x0001; //
play asynchronously
public static uint SND_FILENAME = 0x00020000; // name is
file name
[DllImport("winmm.dll")]
public static extern int
mciSendString(string m_strCmd, string m_strReceive, int m_v1, int
m_v2);
[DllImport("Kernel32", CharSet = CharSet.Auto)]
static extern Int32
GetShortPathName(String path,StringBuilder shortPath, Int32
shortPathLength);
*/
string name = %%1
StringBuilder shortpath=new
StringBuilder(80);
int
result=GetShortPathName(name,shortpath,shortpath.Capacity);
name=shortpath.ToString();
mciSendString(@"close
all",null,0,0);
mciSendString(@"open "+name+" alias song",null,0,0);
//打開
mciSendString("play song",null,0,0); //播放
73.WAV播放
/*
using
System.Runtime.InteropServices;
public static uint SND_ASYNC = 0x0001; //
play asynchronously
public static uint SND_FILENAME = 0x00020000; // name is
file name
[DllImport("winmm.dll")]
public static extern int
mciSendString(string m_strCmd, string m_strReceive, int m_v1, int
m_v2);
[DllImport("Kernel32", CharSet = CharSet.Auto)]
static extern Int32
GetShortPathName(String path,StringBuilder shortPath, Int32
shortPathLength);
*/
string name = %%1
StringBuilder shortpath=new
StringBuilder(80);
int
result=GetShortPathName(name,shortpath,shortpath.Capacity);
name=shortpath.ToString();
mciSendString(@"close
all",null,0,0);
mciSendString(@"open "+name+" alias song",null,0,0);
//打開
mciSendString("play song",null,0,0);
//播放
74.寫圖像到剪切板
//using System.IO;
Bitmap bm =new
Bitmap(filename);
Clipboard.SetDataObject(bm,true);
75.從剪貼板復制圖像到窗體
if
(Clipboard.ContainsImage())
{
this.pictureBox1.Image =
Clipboard.GetImage();
}
剪貼板中的數據類型
//using
System.IO;
d.GetDataPresent(DataFormats.Bitmap)//(.Text .Html)
Bitmap b =
(Bitmap)d.GetData(DataFormat Bitmap)
粘貼
IDataObject data =
Clipboard.GetDataObjects;
if(Data.GetDataPresent(DataFormats.Bipmap))
{
b.Save(@"C:\mymap.bmp");
}
76.刪除文件夾下的所有文件且不刪除文件夾下的文件夾
//using
System.IO;
77.XML遍歷結點屬性值
//using
System.IO;
78.Unicode文件轉GB2312格式
/*
using System.IO;
using
System.Text;
*/
File.WriteAllText(%%2,
File.ReadAllText(%%1,Encoding.Unicode),
Encoding.GetEncoding("GB2312"));
79.開源程序庫Xercesc-C++代碼工程中內聯
using
System;
using System.IO;
using System.Collections;
using
System.Collections.Generic;
using System.Text.RegularExpressions;
using
System.Text;
public class InlineXercesc
{
private const String
filter = ".cpp";
private ArrayList all = new ArrayList();
private
Queue<String> fal2 = new Queue<String>();
private static String
CurDir = Environment.CurrentDirectory;
public InlineXercesc(String
lib)
{
string SourceLib =
"D:\\Desktop\\大項目\\xerces-c-3.0.1\\src";
string pattern = "include.*?" + lib
+ ".*?>"; // 第一個參數為需要匹配的字符串
Match matcher = null;
Queue<string>
fal = new Queue<string>();
DirectoryInfo delfile = new
DirectoryInfo(CurDir);
foreach (DirectoryInfo files2 in
delfile.GetDirectories())
{
String enumDir = CurDir +
Path.DirectorySeparatorChar + files2.Name +
Path.DirectorySeparatorChar;
FileSystemInfo[] fileArr =
files2.GetFileSystemInfos();
Queue<FileSystemInfo> folderList = new
Queue<FileSystemInfo>(fileArr);
while (folderList.Count >
0)
{
FileSystemInfo tmp = folderList.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
folderList.Enqueue(fi);
}
}
else
{
StreamReader
br = null;
try
{
br = new StreamReader(file);
// 打開文件
}
catch
(IOException e)
{
//
沒有打開文件,則產生異常
System.Console.Error.WriteLine("Cannot read '" + f.FullName +
"': " + e.Message);
continue;
}
String line;
StringBuilder sb = new
StringBuilder(2048);
while ((line = br.ReadLine()) != null)
{
//
讀入一行,直到文件結束
matcher = Regex.Match(line, pattern); // 匹配字符串
if
(matcher.Success == true)
{
//
如果有匹配的字符串,則輸出
sb.Append(line.Replace(line.Substring(line.IndexOf("<"),
(line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "\"").Replace('>',
'\"'));
line = line.Substring(line.IndexOf("<") + 1,
(line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/',
'\\');
fal.Enqueue(SourceLib + Path.DirectorySeparatorChar +
line);
}
else
{
sb.Append(line);
}
sb.Append("\r\n");
}
br.Close();
// 關閉文件
StreamWriter w = new
StreamWriter(f.FullName);
w.WriteLine(sb.ToString());
w.Close();
}
}
while
(fal.Count > 0)
{
String file = fal.Dequeue(); //
第2個參數開始,均為文件名。
String targetPath = enumDir +
file.Substring(file.LastIndexOf(Path.DirectorySeparatorChar) + 1);
if
(targetPath.IndexOf('<') == -1 &&
!!File.Exists(targetPath))
{
File.CreateText(targetPath);
StreamReader
br = null;
String line;
try
{
br = new StreamReader(new
StreamReader(file).BaseStream, System.Text.Encoding.UTF7);
//
打開文件
}
catch (IOException e)
{
// 沒有打開文件,則產生異常
//UPGRADE_TODO: 在
.NET 中,method 'java.lang.Throwable.getMessage' 的等效項可能返回不同的值。.
'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1043"'
System.Console.Error.WriteLine("Cannot
read '" + file + "': " + e.Message);
continue;
}
StreamWriter fw = new
StreamWriter(targetPath);
while ((line = br.ReadLine()) != null)
{
//
讀入一行,直到文件結束
matcher = Regex.Match(line, pattern); // 匹配字符串
if
(matcher.Success == true)
{
// 如果有匹配的字符串,則輸出
fal.Enqueue(SourceLib +
Path.DirectorySeparatorChar + line.Substring(line.IndexOf("<") + 1,
(line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/',
'\\'));
line = line.Replace(line.Substring(line.IndexOf("<"),
(line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "\"");
line =
line.Replace(">", "\"");
}
fw.Write(line +
"\r\n");
}
fw.Flush();
fw.Close();
br.Close(); //
關閉文件
}
}
Queue<string> folderListArr = new
Queue<string>();
folderListArr.Enqueue(CurDir);
while
(folderListArr.Count > 0)
{
DirectoryInfo file = new
DirectoryInfo(folderListArr.Dequeue());
FileSystemInfo[] files =
file.GetFileSystemInfos();
for (int i = 0; i < files.Length;
i++)
{
DirectoryInfo ddd = files[i] as DirectoryInfo;
if (ddd !=
null)
{
folderListArr.Enqueue(files[i].FullName);
}
else
{
if
(files[i].Extension == ".hpp")
{
all.Add(files[i].FullName.Replace(".hpp",
".cpp"));
}
}
}
}
int count = 1;
while (count >
0)
{
doSearch(SourceLib);
all.Clear();
while (fal2.Count >
0)
{
String file1 = fal2.Dequeue(); // 第2個參數開始,均為文件名。
String targetPath
= enumDir + file1.Substring(file1.LastIndexOf(Path.DirectorySeparatorChar) +
1);
if (targetPath.IndexOf('<') == -1 &&
!File.Exists(targetPath))
{
File.CreateText(targetPath);
StreamReader
br = null;
String line;
try
{
br = new StreamReader(file1);
//
打開文件
}
catch (IOException
e)
{
System.Console.Error.WriteLine("Cannot read '" + file1 + "': " +
e.Message);
continue;
}
StreamWriter fw;
try
{
fw = new
StreamWriter(targetPath);
while ((line = br.ReadLine()) != null)
{
//
讀入一行,直到文件結束
matcher = Regex.Match(line, pattern); // 匹配字符串
if
(matcher.Success == true)
{
// 如果有匹配的字符串,則輸出
fal2.Enqueue(SourceLib +
Path.DirectorySeparatorChar + line.Substring(line.IndexOf('<') + 1,
(line.LastIndexOf('>')) - (line.IndexOf('<') + 1)).Replace('/',
'\\'));
all.Add(fal2.Peek().Replace(".hpp", ".cpp"));
line =
line.Replace(line.Substring(line.IndexOf('<'), (line.LastIndexOf('/') + 1) -
(line.IndexOf('<'))), "\"");
line = line.Replace('>',
'\"');
}
fw.Write(line +
"\r\n");
}
fw.Flush();
fw.Close();
br.Close(); // 關閉文件
}
catch
(IOException
e)
{
Console.Error.WriteLine(e.StackTrace);
}
}
}
count =
all.Count;
}
}
}
private void doSearch(string
path)
{
DirectoryInfo filepath = new DirectoryInfo(path);
if
(filepath.Exists)
{
FileSystemInfo[] fileArray =
filepath.GetFileSystemInfos();
foreach (FileSystemInfo f in
fileArray)
{
DirectoryInfo dd = f as DirectoryInfo;
if (dd !=
null)
{
doSearch(f.FullName);
}
else
{
FileInfo ff = f as
FileInfo;
if (f.Name.IndexOf(filter) > -1)
{
foreach (string file in
all)
{
if (file.IndexOf('<') == -1 && Path.GetFileName(file) ==
f.Name)
{
fal2.Enqueue(f.FullName);
}
}
}
}
}
}
}
static
void Main(String[] args)
{
new InlineXercesc("xercesc");
FileInfo f =
new FileInfo(CurDir + "\\DetailCpp.cmd");
StreamWriter w =
f.CreateText();
w.WriteLine("copy StdAfx.cpp+*.c+*.cpp " + CurDir
+
"\\StdAfx.cpp && del *.c && del
*.cpp");
w.Close();
}
}
80.提取包含頭文件列表
//InlineExt.cs
using
System;
using System.IO;
using System.Collections;
using
System.Collections.Generic;
using System.Text.RegularExpressions;
using
System.Text;
public class InlineExt
{
private System.String CurDir
= Environment.CurrentDirectory;
public InlineExt()
{
string pattern =
"include.*?\".*?.hpp\""; // 第一個參數為需要匹配的字符串
Match matcher = null;
FileInfo
delfile = new System.IO.FileInfo(CurDir);
FileInfo[] files2 =
SupportClass.FileSupport.GetFiles(delfile);
for (int l = 0; l <
files2.Length; l++)
{
if
(Directory.Exists(files2[l].FullName))
{
Queue<String> ts = new
Queue<String>();
FileInfo file = new
FileInfo(Path.Combine(files2[l].FullName , "StdAfx.cpp"));
StreamReader br =
null;
StreamWriter fw = null;
String line;
try
{
br = new
StreamReader(new StreamReader(file.FullName,
System.Text.Encoding.Default).BaseStream, new
System.IO.StreamReader(file.FullName,
System.Text.Encoding.Default).CurrentEncoding); // 打開文件
while ((line =
br.ReadLine()) != null)
{
matcher = Regex.Match(line, pattern); //
匹配字符串
if (matcher.Success == true)
{
//
如果有匹配的字符串,則輸出
ts.Enqueue(line.Substring(line.IndexOf('\"') + 1,
(line.LastIndexOf('\"')) - (line.IndexOf('\"') + 1)));
}
}
FileInfo
file2 = new FileInfo(Path.Combine(files2[l].FullName , "ReadMe.txt"));
if
(File.Exists(file2.FullName))
{
fw = new StreamWriter(file2.FullName,
false, System.Text.Encoding.GetEncoding("GB2312"));
//System.Text.Encoding.Default
foreach(string it in
ts)
{
fw.Write("#include \"" + it + "\"\r\n");
}
}
}
catch
(IOException e)
{
// 沒有打開文件,則產生異常
Console.Error.WriteLine("Cannot read
'" + file + "': " +
e.Message);
continue;
}
finally
{
try
{
if (br !=
null)
br.Close();
if (fw != null)
fw.Close();
}
catch
(IOException
e)
{
Console.WriteLine(e.StackTrace);
}
}
}
}
}
public
static void Main(System.String[] args)
{
new
InlineExt();
}
}
//SupportClass.cs
using System;
///
<summary>
/// Contains conversion support elements such as classes,
interfaces and static methods.
/// </summary>
public class
SupportClass
{
/// <summary>
/// Writes the exception stack trace
to the received stream
/// </summary>
/// <param
name="throwable">Exception to obtain information from</param>
///
<param name="stream">Output sream used to write to</param>
public
static void WriteStackTrace(System.Exception throwable, System.IO.TextWriter
stream)
{
stream.Write(throwable.StackTrace);
stream.Flush();
}
/*******************************/
///
<summary>
/// Represents the methods to support some operations over
files.
/// </summary>
public class FileSupport
{
///
<summary>
/// Creates a new empty file with the specified
pathname.
/// </summary>
/// <param name="path">The abstract
pathname of the file</param>
/// <returns>True if the file does
not exist and was succesfully created</returns>
public static bool
CreateNewFile(System.IO.FileInfo path)
{
if (path.Exists)
{
return
false;
}
else
{
System.IO.FileStream createdFile =
path.Create();
createdFile.Close();
return true;
}
}
///
<summary>
/// Compares the specified object with the specified
path
/// </summary>
/// <param name="path">An abstract
pathname to compare with</param>
/// <param name="file">An object
to compare with the given pathname</param>
/// <returns>A value
indicating a lexicographically comparison of the
parameters</returns>
public static int CompareTo(System.IO.FileInfo
path, System.Object file)
{
if( file is System.IO.FileInfo
)
{
System.IO.FileInfo fileInfo = (System.IO.FileInfo)file;
return
path.FullName.CompareTo( fileInfo.FullName );
}
else
{
throw new
System.InvalidCastException();
}
}
/// <summary>
/// Returns
an array of abstract pathnames representing the files and directories of the
specified path.
/// </summary>
/// <param name="path">The
abstract pathname to list it childs.</param>
/// <returns>An
array of abstract pathnames childs of the path specified or null if the path is
not a directory</returns>
public static System.IO.FileInfo[]
GetFiles(System.IO.FileInfo path)
{
if ( (path.Attributes &
System.IO.FileAttributes.Directory) > 0 )
{
String[] fullpathnames =
System.IO.Directory.GetFileSystemEntries(path.FullName);
System.IO.FileInfo[]
result = new System.IO.FileInfo[fullpathnames.Length];
for(int i = 0; i <
result.Length ; i++)
result[i] = new
System.IO.FileInfo(fullpathnames[i]);
return result;
}
else return
null;
}
/// <summary>
/// Creates an instance of System.Uri class
with the pech specified
/// </summary>
/// <param
name="path">The abstract path name to create the Uri</param>
///
<returns>A System.Uri instance constructed with the specified
path</returns>
public static System.Uri ToUri(System.IO.FileInfo
path)
{
System.UriBuilder uri = new System.UriBuilder();
uri.Path =
path.FullName;
uri.Host = String.Empty;
uri.Scheme =
System.Uri.UriSchemeFile;
return uri.Uri;
}
/// <summary>
///
Returns true if the file specified by the pathname is a hidden file.
///
</summary>
/// <param name="file">The abstract pathname of the
file to test</param>
/// <returns>True if the file is hidden,
false otherwise</returns>
public static bool
IsHidden(System.IO.FileInfo file)
{
return ((file.Attributes &
System.IO.FileAttributes.Hidden) > 0);
}
/// <summary>
///
Sets the read-only property of the file to true.
/// </summary>
///
<param name="file">The abstract path name of the file to
modify</param>
public static bool SetReadOnly(System.IO.FileInfo
file)
{
try
{
file.Attributes = file.Attributes |
System.IO.FileAttributes.ReadOnly;
return true;
}
catch
(System.Exception exception)
{
String exceptionMessage =
exception.Message;
return false;
}
}
/// <summary>
/// Sets
the last modified time of the specified file with the specified value.
///
</summary>
/// <param name="file">The file to change it
last-modified time</param>
/// <param name="date">Total number of
miliseconds since January 1, 1970 (new last-modified time)</param>
///
<returns>True if the operation succeeded, false
otherwise</returns>
public static bool
SetLastModified(System.IO.FileInfo file, long date)
{
try
{
long
valueConstant = (new System.DateTime(1969, 12, 31, 18, 0,
0)).Ticks;
file.LastWriteTime = new System.DateTime( (date * 10000L) +
valueConstant );
return true;
}
catch (System.Exception
exception)
{
String exceptionMessage = exception.Message;
return
false;
}
}
}
}
81.GB2312文件轉Unicode格式
/*
using
System.IO;
using System.Text;
*/
File.WriteAllText(%%2,
File.ReadAllText(%%1,Encoding.GetEncoding("GB2312")),
Encoding.Unicode);
82.Java程序打包
/*
using System.IO;
using
System.Collections;
using System.Diagnostics;
*/
string path =
%%1;
path = (path.LastIndexOf(Path.DirectorySeparatorChar) == path.Length -
1) ? path : path + Path.DirectorySeparatorChar;
FileInfo myFilePath = new
FileInfo(path + "conf.txt");
DirectoryInfo dir = new
DirectoryInfo(path);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
if
(f.Name.Substring(2).Contains('.')
&&
f.Name.Substring(
f.Name.LastIndexOf('.'))
== ".java")
{
className =
f.Name.Substring(0,
f.Name.LastIndexOf('.'));
Stream resultFile =
myFilePath.Open(FileMode.OpenOrCreate);
StreamWriter myFile = new
StreamWriter(resultFile);
myFile.WriteLine("Main-Class:" +
className);
myFile.Flush();
myFile.Close();
resultFile.Close();
LandFileDivisison
= new System.Diagnostics.Process();
LandFileDivisison.StartInfo.FileName =
"javac "
+ f.FullName
+ " && jar cmf "
+ myFilePath.FullName +
" "
+ className + ".jar " + className
+
".class";
LandFileDivisison.Start();
LandFileDivisison = new
System.Diagnostics.Process();
LandFileDivisison.StartInfo.FileName = "java
-jar " + className;
LandFileDivisison.Start();
}
}
}
dir = new
DirectoryInfo(path);
fileArr = dir.GetFileSystemInfos();
Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
if
(f.Name.Substring(2).Contains('.')
&&
f.Name.Substring(
f.Name.LastIndexOf('.'))
==
".class")
f.Delete();
}
}
83.UTF-8文件轉Unicode格式
84.創建PDF文檔
85.創建Word文檔
/*
添加引用->COM->Microsoft
Word 11.0 Object Library
using
Word;
*/
//下面的例子中包括C#對Word文檔的創建、插入表格、設置樣式等操作:
//(例子中代碼有些涉及數據信息部分被省略,重要是介紹一些C#操作word文檔的方法)
public
string CreateWordFile(string CheckedInfo)
{
string message =
"";
try
{
Object Nothing =
System.Reflection.Missing.Value;
Directory.CreateDirectory("C:/CNSI");
//創建文件所在目錄
string name = "CNSI_" +
DateTime.Now.ToShortString()+".doc";
object filename = "C://CNSI//" + name;
//文件保存路徑
//創建Word文檔
Word.Application WordApp = new
Word.ApplicationClass();
Word.Document WordDoc = WordApp.Documents.Add(ref
Nothing, ref Nothing, ref Nothing, ref
Nothing);
//添加頁眉
WordApp.ActiveWindow.View.Type =
WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView =
WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[頁眉內容]");
WordApp.Selection.ParagraphFormat.Alignment
=
Word.WdParagraphAlignment.wdAlignParagraphRight;//設置右對齊
WordApp.ActiveWindow.View.SeekView
=
WdSeekView.wdSeekMainDocument;//跳出頁眉設置
WordApp.Selection.ParagraphFormat.LineSpacing
= 15f;//設置文檔的行間距
//移動焦點並換行
object count = 14;
object WdLine =
Word.WdUnits.wdLine;//換一行;
WordApp.Selection.MoveDown(ref WdLine, ref count,
ref
Nothing);//移動焦點
WordApp.Selection.TypeParagraph();//插入段落
//文檔中創建表格
Word.Table
newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref
Nothing);
//設置表格樣式
newTable.Borders.OutsideLineStyle =
Word.WdLineStyle.wdLineStyleThickThinLargeGap;
newTable.Borders.InsideLineStyle
= Word.WdLineStyle.wdLineStyleSingle;
newTable.Columns[1].Width =
100f;
newTable.Columns[2].Width = 220f;
newTable.Columns[3].Width =
105f;
//填充表格內容
newTable.Cell(1, 1).Range.Text =
"產品詳細信息表";
newTable.Cell(1, 1).Range.Bold = 2;//設置單元格中字體為粗體 軟件開發網
www.mscto.com
//合並單元格
newTable.Cell(1, 1).Merge(newTable.Cell(1,
3));
WordApp.Selection.Cells.VerticalAlignment =
Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
WordApp.Selection.ParagraphFormat.Alignment
=
Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
//填充表格內容
newTable.Cell(2,
1).Range.Text = "產品基本信息";
newTable.Cell(2, 1).Range.Font.Color =
Word.WdColor.wdColorDarkBlue;//設置單元格內字體顏色
//合並單元格
newTable.Cell(2,
1).Merge(newTable.Cell(2, 3));
WordApp.Selection.Cells.VerticalAlignment =
Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
//填充表格內容
newTable.Cell(3,
1).Range.Text = "品牌名稱:";
newTable.Cell(3, 2).Range.Text =
BrandName;
//縱向合並單元格
newTable.Cell(3, 3).Select();//選中一行
object
moveUnit = Word.WdUnits.wdLine;
object moveCount = 5;
object moveExtend =
Word.WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref
moveCount, ref
moveExtend);
WordApp.Selection.Cells.Merge();
//插入圖片
string FileName =
Picture;//圖片所在路徑
object LinkToFile = false;
object SaveWithDocument =
true;
object Anchor =
WordDoc.Application.Selection.Range;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName,
ref LinkToFile, ref SaveWithDocument, ref
Anchor);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width =
100f;//圖片寬度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height =
100f;//圖片高度
//將圖片設置為四周環繞型
Word.Shape s =
WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type
= Word.WdWrapType.wdWrapSquare;
newTable.Cell(12, 1).Range.Text =
"產品特殊屬性";
newTable.Cell(12, 1).Merge(newTable.Cell(12,
3));
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref
Nothing);
WordDoc.Paragraphs.Last.Range.Text = "文檔創建時間:" +
DateTime.Now.ToString();//“落款”
WordDoc.Paragraphs.Last.Alignment =
Word.WdParagraphAlignment.wdAlignParagraphRight;
//文件保存
WordDoc.SaveAs(ref
filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref
Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref
Nothing, ref Nothing, ref Nothing, ref Nothing);
WordDoc.Close(ref Nothing,
ref Nothing, ref Nothing);
WordApp.Quit(ref Nothing, ref Nothing, ref
Nothing);
message=name+"文檔生成成功,以保存到C:CNSI下";
}
catch
{
message =
"文件導出異常!";
}
return message;
}
86.快速高效的文件加密
/*
using
System.IO;
using System.Windows.Forms.Design;//加載System.Design.dll的.Net
API
*/
private static int ka,kb,kc,kd;
int[]
a={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
int[]
b={3,3,3,5,5,3,3,3,5,3,5,3,7,3,11,7,11,3,5,3,3,3,7,5,5,3,7,3,11,13,3};
int[]
c={3,5,7,5,7,11,13,19,17,29,19,31,17,41,11,19,13,47,29,53,59,67,29,41,43,71,31,73,23,23,101};
int[]
d={5,7,11,13,17,17,19,29,43,43,47,47,59,61,61,67,71,71,73,79,89,101,101,103,107,107,109,109,127,149,151};
private
static int niyuan(int m,int n)
{
int
a,b,c,d,t,yu,shang,mod;
a=m;
b=n;
mod=a;
c=0;
d=1;
while(b<0)
b+=a;
if(a%b==0
|| b%2==0)
return
0;
while(b!=1)
{
t=a%b;
shang=a/b;
a=b;
b=t;
yu=c-shang*d;
c=d;
d=yu;
}
if(yu<0)
yu+=mod;
return
yu;
}
private static int GetDaysInMoths(int nMonths)
{
return
new DateTime(DateTime.Now.Year,nMonths).DaysInMonth;
}
private static
void init()
{
DateTime t2=new DateTime(1979,9,23);
DateTime
t1=DateTime.Now;
TimeSpan ts=t1-t2;
Random rand=new
Random(ts.Days*8-55);
UInt32
r=rand.NextDouble()*(GetDaysInMonths(t2.Month)));
ka=a[r];
kb=b[r];
kc=c[r];
kd=d[r];
}
private
class FolderDialog : FolderNameEditor
{
FolderNameEditor.FolderBrowser
fDialog =
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
dlg = new FolderDialog();
dlg.DisplayDialog();
FolderDialog dlg2 = new
FolderDialog();
dlg.DisplayDialog();
if(dlg.ShowDialog()==DialogResult.OK)
{
if(Path.GetExtension(dlg.SelectedPath).ToLower()==".txt")
{
if(dlg2.ShowDialog()==DialogResult.OK
)
{
init();
}
}
else
{
if(dlg2.ShowDialog()==DialogResult.OK
)
{
init();
}
}
87.從CSV文件構造XML文檔
/*
using
System.IO;
using System.Xml.Linq;
using System.Net;
using
System.Text.RegularExpressions;
*/
string[]
quotes=File.ReadLines(%%1);
XElement stockQuotes=new XElement("Root",from
quote in quotes
let fields=quote.Split(new
char[]{',','-'},StringSplitOption.RemoveEmptyEntries)
select new
XElement("Company",fields[0].Trim()),
new
XElement("LastPrice",fields[2].Trim()),
new
XElement("Time",fields[1].Trim()),
new
XElement("HighToday",fields[3].Trim()),
stockQuotes.Save(%%2);
88.從XML文檔生成CSV文件
/*
using
System.IO;
using System.Collections.Generic;
using System.Linq;
using
System.Text;
using System.Xml.Linq;
*/
XElement
black=XElement.Load(%%1);
string file=
(from elem in
black.Elements("Player")
let statistics=elem.Element("Statistics")
select
string.Format("{0},{1},{2},{3}",
(string)statistics.Attribute("Name"),
(string)statistics.Element("AverageAmountLost"),
(string)statistics.Element("AverageAmountWon"),
Environment.NewLine)),
Aggregate(new
StringBuilder(),(builder,str)=>builder.Append(str),
builder=>builder.ToString());
FileInfo
f = new FileInfo(%%2);
StreamWriter w =
f.CreateText();
w.Write(file);
w.Flush();
w.Close();
89.模擬鍵盤輸入字符串
//using
System.Windows.Forms;
SendKeys.SendWait(%%1);
90.提取PDF文件中的文本
xpdf
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#
code
p.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; //0x80000000
public const int GENERIC_WRITE =
0x40000000;
public const int GENERIC_EXECUTE = 0x20000000;
public const
int GENERIC_ALL = 0x10000000;
public const int FILE_ATTRIBUTE_NORMAL =
0x80;
public const int FILE_FLAG_SEQUENTIAL_SCAN = 0x8000000;
public const
int INVALID_HANDLE_VALUE = -1;
public const int PAGE_NOACCESS =
1;
public const int PAGE_READONLY = 2;
public const int PAGE_READWRITE =
4;
public const int FILE_MAP_COPY = 1;
public const int FILE_MAP_WRITE
= 2;
public const int FILE_MAP_READ = 4;
*/
IntPtr vFileHandle =
CreateFile(@"c:\temp\temp.txt",
GENERIC_READ | GENERIC_WRITE, FileShare.Read
| FileShare.Write,
IntPtr.Zero, FileMode.Open,
FILE_ATTRIBUTE_NORMAL |
FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero);
if (INVALID_HANDLE_VALUE !=
(int)vFileHandle)
{
IntPtr vMappingHandle =
CreateFileMapping(
vFileHandle, IntPtr.Zero, PAGE_READWRITE, 0, 0,
"~MappingTemp");
if (vMappingHandle != IntPtr.Zero)
{
IntPtr vHead =
MapViewOfFile(vMappingHandle,
FILE_MAP_COPY | FILE_MAP_READ | FILE_MAP_WRITE,
0, 0, IntPtr.Zero);
if (vHead != IntPtr.Zero)
{
uint vSize =
GetFileSize(vFileHandle, IntPtr.Zero);
for (int i = 0; i <= vSize / 2;
i++)
{
byte vTemp = Marshal.ReadByte((IntPtr)((int)vHead +
i));
Marshal.WriteByte((IntPtr)((int)vHead +
i),
Marshal.ReadByte((IntPtr)((int)vHead + vSize - i -
1)));
Marshal.WriteByte((IntPtr)((int)vHead + vSize - i - 1),
vTemp);
}
UnmapViewOfFile(vHead);
}
CloseHandle(vMappingHandle);
}
CloseHandle(vFileHandle);
}
92.重定向windows控制台程序的輸出信息
//using
System.Diagnostics;
delegate void dReadLine(string strLine);
private void
excuteCommand(string strFile, string args, dReadLine
onReadLine)
{
System.Diagnostics.Process p = new Process();
p.StartInfo
= new System.Diagnostics.ProcessStartInfo();
p.StartInfo.FileName =
strFile;
p.StartInfo.Arguments = args;
p.StartInfo.WindowStyle =
System.Diagnostics.ProcessWindowStyle.Hidden;
p.StartInfo.RedirectStandardOutput
= true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow =
true;
p.Start();
System.IO.StreamReader reader =
p.StandardOutput;//截取輸出流
string line = reader.ReadLine();//每次讀取一行
while
(!reader.EndOfStream)
{
onReadLine(line);
line =
reader.ReadLine();
}
p.WaitForExit();
}
private void
PrintMessage(string strLine)
{
%%2 += strLine + "
";
}
excuteCommand("cmd", " "+%%1, new
dReadLine(PrintMessage));
//先讀取文本中的命令假設為strCommand
string
strCommand="ipconfig";
string strRst=string.Empty;
Process p = new
Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c "
+ strCommand;
p.StartInfo.UseShellExecute =
false;
//重定向標准輸入
//p.StartInfo.RedirectStandardInput =
false;
//重定向標准輸出
p.StartInfo.RedirectStandardOutput =
true;
//重定向錯誤輸出
p.StartInfo.RedirectStandardError =
false;
//設置不顯示窗口
p.StartInfo.CreateNoWindow =
true;
try
{
//啟動進程
p.Start();
//停止3秒鍾
Thread.Sleep(3000);
//如果進程結束
//或者你可以等到結束再獲取
if
(p.HasExited)
{
//從輸出流獲取執行結果
strRst =
p.StandardOutput.ReadToEnd();
}
else
{
p.Kill();
}
}
catch
(Exception ex)
{
strRst =
"";
}
finally
{
p.Close();
}
//strRst即為運行后的結果,再將他寫入另一個文本
93.序列化
using
System.Collections;
using System.Text;
namespace
SerializableTest
{
[Serializable]
public class Book
{
public
Book()
{
alBookReader = new ArrayList();
}
public string
strBookName;
[NonSerialized]
public string strBookPwd;
private
string _bookID;
public string BookID
{
get { return _bookID; }
set {
_bookID = value; }
}
public ArrayList alBookReader;
private
string _bookPrice;
public void SetBookPrice(string price)
{
_bookPrice
= price;
}
public void Write()
{
Console.WriteLine("Book ID:" +
BookID);
Console.WriteLine("Book Name:" +
strBookName);
Console.WriteLine("Book Password:" +
strBookPwd);
Console.WriteLine("Book Price:" +
_bookPrice);
Console.WriteLine("Book Reader:");
for (int i = 0; i <
alBookReader.Count;
i++)
{
Console.WriteLine(alBookReader[i]);
}
}
}
}
using
(FileStream fs = new FileStream(strFile, FileMode.Create))
{
Book book =
new Book();
book.BookID =
"1";
book.alBookReader.Add("gspring");
book.alBookReader.Add("永春");
book.strBookName
= "C#強化";
book.strBookPwd =
"*****";
book.SetBookPrice("50.00");
BinarySerialize serialize = new
BinarySerialize();
serialize.Serialize(book);
}
94.反序列化
using
System.Collections;
using System.Text;
namespace
SerializableTest
{
[Serializable]
public class Book
{
public
Book()
{
alBookReader = new ArrayList();
}
public string
strBookName;
[NonSerialized]
public string strBookPwd;
private
string _bookID;
public string BookID
{
get { return _bookID; }
set {
_bookID = value; }
}
public ArrayList alBookReader;
private
string _bookPrice;
public void SetBookPrice(string price)
{
_bookPrice
= price;
}
public void Write()
{
Console.WriteLine("Book ID:" +
BookID);
Console.WriteLine("Book Name:" +
strBookName);
Console.WriteLine("Book Password:" +
strBookPwd);
Console.WriteLine("Book Price:" +
_bookPrice);
Console.WriteLine("Book Reader:");
for (int i = 0; i <
alBookReader.Count;
i++)
{
Console.WriteLine(alBookReader[i]);
}
}
}
}
Book
book;
using (FileStream fs = new FileStream(strFile,
FileMode.Open))
{
BinaryFormatter formatter = new
BinaryFormatter();
book = (Book)formatter.Deserialize(fs);
}
return
book;
95.報表相關
/*
using
CrystalDecisions.CrystalReports.Engine;
using
CrystalDecisions.Shared;
*/
2、水晶報表的兩種格式
1)pull模式,不利用DataSet,直接從數據庫中取出數據
2)
push模式,使用DataSet,利用它進行數據的加載和處理等
3.
水晶報表使用的庫
1)水晶報表的引擎(CREnging.dll),作用:合並數據,裝換格式
2)水晶報表設計器(CRDesigner.dll),作用:設計標題,插入數據等
3)水晶報表查看控件(CRWebFormViewer.DLL)
4)需要引入的命名空間
using
CrystalDecisions.CrystalReports.Engine;
using
CrystalDecisions.Shared;
4、Pull模式下使用水晶報表
1)創建rpt文件
2)拖放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(Path.DirectorySeparatorChar) ==
%%2.Length - 1) ? %%2 : %%2 + Path.DirectorySeparatorChar;
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
DirectoryInfo dir = new
DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ?
%%1 : %%1 + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count
> 0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo f = tmp as
FileInfo;
if (b && f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf(Path.DirectorySeparatorChar)
== parent.Length - 1) ? parent : parent + Path.DirectorySeparatorChar,
path));
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
FileStream
fs = new
FileStream(f,FileMode.Open,FileAccess.Read);
MD5CryptoServiceProvider md5 =
new MD5CryptoServiceProvider();
byte [] md5byte = md5.ComputeHash(fs);
int
i,j;
StringBuilder sb = new StringBuilder(16);
foreach (byte b in
md5byte)
{
i = Convert.ToInt32(b);
j = i >>
4;
sb.Append(Convert.ToString(j,16));
j = ((i << 4) & 0x00ff)
>> 4;
sb.Append(Convert.ToString(j,16));
}
string
%%3=sb.ToString();
}
}
100.復制一個目錄下所有文件到一個文件夾中
/*
using
System.IO;
using System.Collections;
*/
string path =
(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 :
%%2+Path.DirectorySeparatorChar;
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
DirectoryInfo dir = new
DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ?
%%1 : %%1 + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while
(Folders.Count>0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo
f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.CopyTo(path+f.Name);
}
}
101.移動一個目錄下所有文件到一個文件夾中
/*
using
System.IO;
using System.Collections;
*/
string path =
(%%2.LastIndexOf(Path.DirectorySeparatorChar) == %%2.Length - 1) ? %%2 :
%%2+Path.DirectorySeparatorChar;
string parent =
Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path +
Path.GetFileName(%%1));
DirectoryInfo dir = new
DirectoryInfo((%%1.LastIndexOf(Path.DirectorySeparatorChar) == %%1.Length - 1) ?
%%1 : %%1 + Path.DirectorySeparatorChar);
FileSystemInfo[] fileArr =
dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new
Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while
(Folders.Count>0)
{
FileSystemInfo tmp = Folders.Dequeue();
FileInfo
f = tmp as FileInfo;
if (f == null)
{
DirectoryInfo d = tmp as
DirectoryInfo;
foreach (FileSystemInfo fi in
d.GetFileSystemInfos())
{
Folders.Enqueue(fi);
}
}
else
{
f.MoveTo(path+f.Name);
}
}
102.文件RSA高級加密
/*
using
System.IO;
using System.Security.Cryptography;
private
RSACryptoServiceProvider _rsa;
*/
FileStream fin=new
FileStream(%%1,FileMode.Open,FileAccess.Read);
FileStream fout=new
FileStream(%%2,FileMode.OpenOrCreate,FileAccess.Write);
byte[] readBuffer=new
byte[128];
fin.Read(readBuffer,0,readBuffer.Length);
byte[]
encryptedBuffer=_rsa.Encrypt(readBuffer,true);
_rsa.Clear();
103.計算文件大小
/*
using
System.IO;
private const long KB=1024;
private const long
MB=1024*KB;
private const long GB=1024*MB;
*/
FileInfo fi = new
FileInfo(%%1);
long filesize= fi.Length;
string
showsize;
if(filesize>=GB)
showsize.format("%0.2f
GB",(double)filesize/GB);
else if(filesize>=MB)
showsize.format("%0.2f
MB",(double)filesize/MB);
else if(filesize>=KB)
showsize.format("%0.2f
KB",(double)filesize/KB);
else if(filesize>1)
showsize.format("%ld
Bytes",filesize);
else
showsize="1 Byte";
string
%%2=showsize;
104.計算文件夾的大小
/*
using System.IO;
private const
long KB=1024;
private const long MB=1024*KB;
private const long
GB=1024*MB;
*/
private static long FolderFileSize(string
path)
{
long size = 0;
try
{
FileInfo [] files = (new
DirectoryInfo(path)).GetFiles();
foreach(FileInfo file in files)
{
size
+= file.Length;
}
}
catch(Exception
ex)
{
MessageBox.Show(ex.Message);
}
return
size;
}
private static long FolderSize(string path)
{
long Fsize
= 0;
try
{
Fsize = FolderFileSize(path);
DirectoryInfo [] folders =
(new DirectoryInfo(path)).GetDirectories();
foreach(DirectoryInfo folder in
folders)
Fsize += FolderSize(folder.FullName);
}
catch(Exception
ex)
{
MessageBox.Show(ex.Message);
}
return Fsize;
}
long
filesize= FolderSize(%%1);
string
showsize;
if(filesize>=GB)
showsize.format("%0.2f
GB",(double)filesize/GB);
else if(filesize>=MB)
showsize.format("%0.2f
MB",(double)filesize/MB);
else if(filesize>=KB)
showsize.format("%0.2f
KB",(double)filesize/KB);
else if(filesize>1)
showsize.format("%ld
Bytes",filesize);
else
showsize="1 Byte";
string
%%2=showsize;
105.快速獲得當前程序的驅動器、路徑、文件名和擴展名
//using
System.IO;
DirectoryInfo dires= new
DirectoryInfo(Application.StartupPath);
string strQDQ = null;//驅動器
strQDQ
= dires.Root.ToString();
string strPath
=Application.ExecutablePath;//路徑
string FName = null;//文件名
string
FNameExt = null;//擴展名
FileInfo FileIno = new FileInfo(strPath);
FName =
FileIno.Name;
FNameExt =
FileIno.Extension;
106.磁盤剩余空間計算
/*
using
System.Runtime.InteropServices;
//第一種
[DllImport("kernel32")]
public
static extern bool GetDiskFreeSpaceEx(string Path,out long
bytesAvail, out
long bytesOnDisk, out long freeBytesOnDisk);
long bytesAvail,
bytesOnDisk,freeBytesOnDisk,lpTotalNumberOfClusters;
//lpRootPathName
String,不包括卷名的一個磁盤根路徑
//lpSectorsPerCluster
Long,用於裝載一個簇內扇區數的變量
//lpBytesPerSector
Long,用於裝載一個扇區內字節數的變量
//lpNumberOfFreeClusters
Long,用於裝載磁盤上剩余簇數的變量
//lpTtoalNumberOfClusters
Long,用於裝載磁盤上總簇數的變量
*/
string tempImagePath =
Application.StartupPath;//取出應用安裝的目錄。
GetDiskFreeSpaceEx(tempImagePath, out
bytesAvail, out bytesOnDisk, out freeBytesOnDisk);
textBox1.Text =
(freeBytesOnDisk/1024/1024).ToString();
//第二種
引用System.Management
//using System.Management;
ManagementClass diskClass =
new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection
disks=diskClass.GetInstances();
System.UInt64
space=UInt64.MinValue;
foreach(ManagementObject disk in
disks)
{
if((disk["Name"]).ToString() == "C:")
space =
(System.UInt64)(disk["FreeSpace"]);
}
//第三種 framework 中已經有類了, 不需要調用
API
//using System.IO;
long x = new DriveInfo(%%1).AvailableFreeSpace;
//"C"
string showsize;
if (x >= GB)
showsize.format("%0.2f GB",
(double)x / GB);
else if (x >= MB)
showsize.format("%0.2f MB",
(double)x / MB);
else if (x >= KB)
showsize.format("%0.2f KB",
(double)x / KB);
else if (x > 1)
showsize.format("%ld Bytes",
x);
else
showsize = "1 Byte";
return
showsize;
107.獲取當前程序進程ID
//using System.Diagnostics;
int %%1 =
Process.GetCurrentProcess().Id;
108.全盤搜索文件
/*
using
System.Text;
using System.IO;
*/
string strFileName;
public string
StrFileName{get { return strFileName; }set { strFileName = value; }}
delegate
void Temp(string fileName);
delegate void ShowProgressDelegate(string
fileName, string filePath, IList<IlsitFileFindModleClass>
objIlist);
IList<IlsitFileFindModleClass> objIlist;
public void
GetFoldersPath(){
if (GridSearch.InvokeRequired ==
false){}
else{
objIlist = new
List<IlsitFileFindModleClass>();
string retStr = null;
DriveInfo[]
allDrives = DriveInfo.GetDrives();//檢索計算機上的所有邏輯驅動器的驅動器名稱
foreach (DriveInfo
driPath in
allDrives){//循環輸出各分區的信息
FileSeach(driPath.Name);
}
}
}
public
void GetFoldersPath(string root){
if (GridSearch.InvokeRequired == false) {
}
else { objIlist = new List<IlsitFileFindModleClass>();
FileSeach(root); }
}
public void FileSeach(string root){
string
strFileNameTemp = StrFileName;
Stack<string> dirs = new
Stack<string>(20);
if
(!System.IO.Directory.Exists(root))
return;
dirs.Push(root);
while
(dirs.Count > 0){
string currentDir = dirs.Pop();
string[]
subDirs;
try{
subDirs =
System.IO.Directory.GetDirectories(currentDir);
}
catch
(UnauthorizedAccessException e) { continue; }
catch
(System.IO.DirectoryNotFoundException e) { continue; }
Temp temp=new
Temp(Testll);
label2.Invoke(temp, new object[] { currentDir
});
try{
string[] filesTemp = System.IO.Directory.GetFiles(currentDir,
StrFileName + ".*");
if (filesTemp.Length > 0){
objIlist.Add(new
IlsitFileFindModleClass(strFileNameTemp, currentDir + "\\" + strFileNameTemp +
".*"));
ShowProgressDelegate objTemp = new
ShowProgressDelegate(test);
BeginInvoke(objTemp, new object[] {
strFileNameTemp, currentDir + "\\" + strFileNameTemp + ".*", objIlist
});
continue;
}
}
catch (UnauthorizedAccessException e) { continue;
}
catch (System.IO.DirectoryNotFoundException e) { continue; }
foreach
(string str in subDirs)
dirs.Push(str);
}
}
StrFileName
=%%1;
MethodInvoker mi = new
MethodInvoker(GetFoldersPath);
mi.BeginInvoke(null, null);