代码 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO;
namespace EyesBaby { /// <summary> /// 文件下载类 /// </summary> public class DownloadClass { public string StrUrl;//文件下载网址 public string StrFileName;//下载文件保存地址 public string strError;//返回结果 public long lStartPos = 0; //返回上次下载字节 public long lCurrentPos = 0;//返回当前下载字节 public long lDownloadFile;//返回当前下载文件长度
public void DownloadFile() { System.IO.FileStream fs; if (System.IO.File.Exists(StrFileName)) { fs = System.IO.File.OpenWrite(StrFileName); lStartPos = fs.Length; fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针 } else { fs = new System.IO.FileStream(StrFileName, System.IO.FileMode.Create); lStartPos = 0; }
//打开网络连接 try { System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl); long length = request.GetResponse().ContentLength; lDownloadFile = length; if (lStartPos > 0) request.AddRange((int)lStartPos); //设置Range值
代码 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.IO.Compression; using System.Windows.Forms; using ICSharpCode.SharpZipLib.Zip;
namespace EyesBaby {
public class clsZip { public void CompressFile(string sourceFile, string destinationFile) { // make sure the source file is there if (File.Exists(sourceFile) == false) throw new FileNotFoundException();
try { // Read the bytes from the source file into a byte array sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read);
// Read the source stream values into the buffer buffer = new byte[sourceStream.Length]; int checkCounter = sourceStream.Read(buffer, 0, buffer.Length);
if (checkCounter != buffer.Length) { throw new ApplicationException(); }
// Open the FileStream to write to destinationStream = new FileStream(destinationFile, FileMode.OpenOrCreate, FileAccess.Write);
// Create a compression stream pointing to the destiantion stream compressedStream = new GZipStream(destinationStream, CompressionMode.Compress, true);
// Now write the compressed data to the destination file compressedStream.Write(buffer, 0, buffer.Length); } catch (ApplicationException ex) { MessageBox.Show(ex.Message, "压缩文件时发生错误:", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { // Make sure we allways close all streams if (sourceStream != null) sourceStream.Close();
if (compressedStream != null) compressedStream.Close();
if (destinationStream != null) destinationStream.Close(); } }
public void DecompressFile(string sourceFile, string destinationFile) { // make sure the source file is there if (File.Exists(sourceFile) == false) throw new FileNotFoundException();
try { // Read in the compressed source stream sourceStream = new FileStream(sourceFile, FileMode.Open);
// Create a compression stream pointing to the destiantion stream decompressedStream = new GZipStream(sourceStream, CompressionMode.Decompress, true);
// Read the footer to determine the length of the destiantion file quartetBuffer = new byte[4]; int position = (int)sourceStream.Length - 4; sourceStream.Position = position; sourceStream.Read(quartetBuffer, 0, 4); sourceStream.Position = 0; int checkLength = BitConverter.ToInt32(quartetBuffer, 0);
byte[] buffer = new byte[checkLength + 100];
int offset = 0; int total = 0;
// Read the compressed data into the buffer while (true) { int bytesRead = decompressedStream.Read(buffer, offset, 100);
if (bytesRead == 0) break;
offset += bytesRead; total += bytesRead; }
// Now write everything to the destination file destinationStream = new FileStream(destinationFile, FileMode.Create); destinationStream.Write(buffer, 0, total);
// and flush everyhting to clean out the buffer destinationStream.Flush(); } catch (ApplicationException ex) { MessageBox.Show(ex.Message, "解压文件时发生错误:", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { // Make sure we allways close all streams if (sourceStream != null) sourceStream.Close();
if (decompressedStream != null) decompressedStream.Close();
if (destinationStream != null) destinationStream.Close(); }
}
/// <summary> /// 功能:解压zip格式的文件。 /// </summary> /// <param name="zipFilePath">压缩文件路径</param> /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param> /// <param name="err">出错信息</param> /// <returns>解压是否成功</returns> public bool UnZipFile(string zipFilePath, string unZipDir, out string err) { err = ""; if (zipFilePath == string.Empty) { err = "压缩文件不能为空!"; return false; } if (!File.Exists(zipFilePath)) { err = "压缩文件不存在!"; return false; } //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹 if (unZipDir == string.Empty) unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath)); if (!unZipDir.EndsWith("//")) unZipDir += "//"; if (!Directory.Exists(unZipDir)) Directory.CreateDirectory(unZipDir);
try { using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath))) {
ZipEntry theEntry; while ((theEntry = s.GetNextEntry()) != null) { string directoryName = Path.GetDirectoryName(theEntry.Name); string fileName = Path.GetFileName(theEntry.Name); if (directoryName.Length > 0) { Directory.CreateDirectory(unZipDir + directoryName); } if (!directoryName.EndsWith("//")) directoryName += "//"; if (fileName != String.Empty) { using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name)) {
int size = 2048; byte[] data = new byte[2048]; while (true) { size = s.Read(data, 0, data.Length); if (size > 0) { streamWriter.Write(data, 0, size); } else { break; } } } } }//while } } catch (Exception ex) { err = ex.Message; return false; } return true; }//
}
}
5.System.Diagnostics.Process操作进程
// 关闭程序 System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName(programName); foreach (System.Diagnostics.Process p in ps) { p.Kill(); } // 重启程序 System.Diagnostics.Process.Start(startpath);
6.System.IO文件夹/文件复制
代码 using System; using System.Collections.Generic; using System.Text; using System.IO;
namespace EyesBaby { public class CopyFolder { private static int total = 0; private int FileNumber = 0; //文件夹文件总数