Zi 字媒體
2017-07-25T20:27:27+00:00
C# MySQL/文件檔案 壓縮(ZIP) 備份 ~ DBBackup
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Drawing;
using System.Diagnostics;
using System.IO.Compression;//C# 透過程式壓縮資料夾為zip檔[NET4.5 版本 內建的方法]
namespace SYWEB_V8_Workstation
{
public class FileLib
{
public static bool DBBackup(String StrName="")
{
bool blnAns = false;
if(StrName.Length==0)
{
StrName=DateTime.Now.ToString("yyyyMMddHHmmss")+".zip";
}
String StrSrcFullFilePath = String.Format("{0}\\{1}", path, "mysql\\data\\v8_workstation");
string StrOutPath = String.Format("{0}\\{1}", path, "DBBackup\\");
CreateDirectory(StrOutPath);
CreateDirectory(StrOutPath + "v8_workstation\\");
DirectoryCopy(StrSrcFullFilePath, StrOutPath+ "v8_workstation\\", true);
ZipFile.CreateFromDirectory(StrOutPath+ "\\v8_workstation", StrOutPath + StrName);
DeleteDirectory(StrOutPath + "v8_workstation\\", true);
return blnAns;
}
//刪除目錄,recursive為True時,直接刪除目錄及其目錄下所有文件或子目錄;recursive為False時,需先將目錄下所有文件或子目錄刪除
private static void DeleteDirectory(string path, bool recursive)
{
if (Directory.Exists(path))
{
if (recursive)
{
Directory.Delete(path, true);
}
}
}
public static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
{
// Get the subdirectories for the specified directory.
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: "
+ sourceDirName);
}
DirectoryInfo[] dirs = dir.GetDirectories();
// If the destination directory doesn't exist, create it.
if (!Directory.Exists(destDirName))
{
Directory.CreateDirectory(destDirName);
}
// Get the files in the directory and copy them to the new location.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string temppath = Path.Combine(destDirName, file.Name);
file.CopyTo(temppath, false);
}
// If copying subdirectories, copy them and their contents to new location.
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
string temppath = Path.Combine(destDirName, subdir.Name);
DirectoryCopy(subdir.FullName, temppath, copySubDirs);
}
}
}
//建立目錄
private static void CreateDirectory(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
public static string path = System.Windows.Forms.Application.StartupPath;
public static bool IsUTF8File(String StrName)
{
bool blnAns = false;
Stream reader = File.Open(StrName, FileMode.Open, FileAccess.Read);
Encoding encoder = null;
byte[] header = new byte[4];
// 讀取前四個Byte
reader.Read(header, 0, 4);
if (header[0] == 0xFF && header[1] == 0xFE)
{
// UniCode File
reader.Position = 2;
encoder = Encoding.Unicode;
}
else if (header[0] == 0xEF && header[1] == 0xBB && header[2] == 0xBF)
{
// UTF-8 File
reader.Position = 3;
encoder = Encoding.UTF8;
blnAns = true;
}
else
{
// Default Encoding File
reader.Position = 0;
encoder = Encoding.Default;
}
reader.Close();
// .......... 接下來的程式
return blnAns;
}
public static String ImageFile2Base64String(String StrDestFilePath)
{
String StrAns = "";
try
{
//開啟檔案
FileStream file = File.Open(StrDestFilePath, FileMode.Open, FileAccess.ReadWrite);
//引用myReader類別
BinaryReader read = new BinaryReader(file);
int len = System.Convert.ToInt32(file.Length);
//讀取位元陣列
byte []data = read.ReadBytes(len);
StrAns = Convert.ToBase64String(data);
//讀取資料
//釋放資源
read.Close();
read.Dispose();
file.Close();
//file.Flush();
}
catch
{
}
return StrAns;
}
public static void CreateFile(String StrDestFilePath, byte[] byteSource)
{
FileLib.DeleteFile("temp.png");
try
{
//開啟建立檔案
FileStream file = File.Open(StrDestFilePath, FileMode.Create, FileAccess.ReadWrite);
BinaryWriter write = new BinaryWriter(file);
write.Write(byteSource);
write.Close();
write.Dispose();
write.Flush();
file.Close();
file.Flush();
file.Dispose();
}
catch
{
}
}
public static void CopyFile(String StrSourceFilePath, String StrDestFilePath)
{
System.IO.File.Copy(StrSourceFilePath, StrDestFilePath, true);
}
public static void DeleteFile(String StrFileName,bool blnAtRoot=true)
{
String FilePath="";
if (blnAtRoot == true)
{
FilePath = path + "\\" + StrFileName;
}
else
{
FilePath = StrFileName;
}
if (System.IO.File.Exists(FilePath))
{
try
{
System.IO.File.Delete(FilePath);
}
catch
{
}
}
}
public static void TxtFile(String StrFileName, String StrData)
{
StreamWriter sw = new StreamWriter(StrFileName);
sw.WriteLine(StrData);// 寫入文字
sw.Close();// 關閉串流
}
public static void logFile(String StrFileName, String StrData)
{
FileStream fs = new FileStream(StrFileName, FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(DateTime.Now.ToString("HH:mm:ss - ")+StrData);// 寫入文字
sw.Close();// 關閉串流
}
//---
//除錯(DEBUG)專用 log函式庫
public static bool g_blnDebug = false;
public static StreamWriter g_sw;
public static void createLogFile()
{
if (g_blnDebug == true)
{
g_sw = new StreamWriter(Application.StartupPath + "\\" + DateTime.Now.ToString("yyyy-MM-dd-HHmm") + ".log");
writeLogFile("createLogFile");
}
}
public static void writeLogFile(String msg)
{
if (g_blnDebug == true)
{
g_sw.WriteLine(msg + ",\t" + DateTime.Now.ToString("yyyy/MM/dd/HH:mm:ss"));
}
}
public static void closeLogFile()
{
if (g_blnDebug == true)
{
writeLogFile("closeLogFile");
g_sw.Close();// 關閉串流
}
}
//---除錯(DEBUG)專用 log函式庫
//---
//縮圖
public static bool ImageResize(String strImageSrcPath, String strImageDesPath, int intWidth = 0, int intHeight = 0)
{
/*
ImageFormat IF_Png = ImageFormat.Png;
bool blnAns = true;
Image objImage = Image.FromFile(strImageSrcPath);
if (intWidth > objImage.Width)
{
intWidth = objImage.Width;
}
if (intHeight > objImage.Height)
{
intHeight = objImage.Height;
}
if ((intWidth == 0) && (intHeight == 0))
{
intWidth = objImage.Width;
intHeight = objImage.Height;
}
else if ((intHeight == 0) && (intWidth != 0))
{
intHeight = (int)(objImage.Height * intWidth / objImage.Width);
}
else if ((intWidth == 0) && (intHeight != 0))
{
intWidth = (int)(objImage.Width * intHeight / objImage.Height);
}
Bitmap imgOutput = new Bitmap(objImage, intWidth, intHeight);
imgOutput.Save(strImageDesPath, IF_Png);//imgOutput.Save(strImageDesPath, objImage.RawFormat);
objImage.Dispose();
objImage = null;
imgOutput.Dispose();
imgOutput = null;
return blnAns;
*/
Process m_pro;
String StrVar = String.Format("\"{0}\" \"{1}\" {2}", strImageSrcPath, strImageDesPath, intWidth);
ProcessStartInfo startInfo = new ProcessStartInfo("CS_cmd_ImageResize.exe", StrVar);
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
try
{
m_pro = Process.Start(startInfo);
}
catch
{
return false;//找不到執行檔的防呆 at 2017/06/16
}
if (m_pro != null)
{
m_pro.WaitForExit();//下載SERVER資料
m_pro = null;
}
return true;
}
//---縮圖
}
}
寫了
5860316篇文章,獲得
23313次喜歡