C# MySQL/文件檔案 壓縮(ZIP) 備份 ~ DBBackup​

C# MySQL/文件檔案 壓縮(ZIP) 備份 ~ DBBackup​

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;
        }

        //---縮圖
    }
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *