欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

c# 上傳壓縮包(Zip/Rar) 解壓,遍歷文件夾和文件

admin
2025年2月13日 17:15 本文熱度 608
:c# 上傳壓縮包(Zip/Rar) 解壓,遍歷文件夾和文件

/// <summary>

/// 解壓壓縮文件到指定目錄

/// <param name="zipFilePath">壓縮文件路徑</param>

/// <summary>

/// <returns></returns>

public void MuliteImport(string zipFilePath)

{

//解壓文件存放路徑

    string unZipDir = string.Format("{0}/{1}/{2}/{3}", Config.GetValue("AnnexesFile"), "Decompress", LoginUserInfo.Get().userId, DateTime.Now.ToString("yyyyMMdd"));

    string FileEextension = Path.GetExtension(zipFilePath);//文件名后綴

//如果解壓目錄不存在則創(chuàng)建

    if (!Directory.Exists(unZipDir))

    {

        Directory.CreateDirectory(unZipDir);

    }

    if (FileEextension.ToLower() == ".zip")

    {

        Decompress(unZipDir, zipFilePath);

    }

    else if (FileEextension.ToLower() == ".rar")

    {

        DeCompressRar(unZipDir, zipFilePath);

    }

}


#region 解壓縮文件

/// <summary>

/// 解壓zip格式的文件(在工程中引用SharpZipLib)

/// </summary>

/// <param name="unZipDir">解壓文件存放路徑</param>

/// <param name="zipFilePath">壓縮文件路徑</param>

/// <returns></returns>

public void Decompress(string unZipDir, string zipFilePath)

{

    unZipDir = unZipDir + "/zip";

    if (!Directory.Exists(unZipDir))

        Directory.CreateDirectory(unZipDir);//生成解壓目錄

    byte[] data = new byte[2048];

    int size = 2048;

//一個ZIP文件中的條目,可以理解為壓縮包里面的一個文件夾/文件

    ZipEntry theEntry = null;

//解壓縮輸出流,從壓縮包中一個接一個的讀出文檔。

    using (ZipInputStream inputStream = new ZipInputStream(File.OpenRead(zipFilePath)))

    {

        while ((theEntry = inputStream.GetNextEntry()) != null)

        {

            if (!string.IsNullOrEmpty(theEntry.Name))

            {

                string fileName = Path.Combine(unZipDir, theEntry.Name);

                fileName = fileName.Replace('/', '\\');


                if (fileName.EndsWith("\\"))

                {

                    Directory.CreateDirectory(fileName);

                    ec_library_catalogueEntity catalogue = new ec_library_catalogueEntity();

                    continue;

                }

                using (FileStream streamWriter = File.Create(fileName))

                {

                    while (true)

                    {

                        size = inputStream.Read(data, 0, data.Length);

                        if (size <= 0) break;

                        streamWriter.Write(data, 0, size);

                    }

                    streamWriter.Close();

                }

            }

        }

        inputStream.Close();

    }

}


/// <summary>

/// 獲取winrar的安裝位置

/// </summary>

/// <returns></returns>

public static string ExistsWinRar()

{

    string result = string.Empty;

    string key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";

    RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(key);

    if (registryKey != null)

    {

        result = registryKey.GetValue("").ToString();

        registryKey.Close();

    }

    return result;

}


/// <summary>

/// 將格式為rar的壓縮文件解壓到指定的目錄(本機(jī)必須安裝winrar解壓軟件)

/// </summary>

/// <param name="unZipDir">解壓后要保存到的目錄</param>

/// <param name="zipFilePath">要解壓rar文件的路徑</param>

/// <returns></returns>

public void DeCompressRar(string unZipDir, string zipFilePath)

{

    var Compressfiles = new List<FileInfo>();

    string winrarPath = ExistsWinRar();

    if (!string.IsNullOrEmpty(winrarPath))

    {

        unZipDir = unZipDir + "/rar";

        if (!Directory.Exists(unZipDir))

            Directory.CreateDirectory(unZipDir);//生成解壓目錄

        string winrarDir = Path.GetDirectoryName(winrarPath);

        string commandOptions = string.Format("x {0} {1} -y", zipFilePath, unZipDir);

        ProcessStartInfo processStartInfo = new ProcessStartInfo();

        processStartInfo.FileName = Path.Combine(winrarDir, "rar.exe");

        processStartInfo.Arguments = commandOptions;

        processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;


        Process process = new Process();

        process.StartInfo = processStartInfo;

        process.StartInfo.UseShellExecute = false;

        process.StartInfo.CreateNoWindow = true;

        process.Start();

        var files = 0;

        while (process.HasExited)

        {

            files++;

        }

        process.WaitForExit();

        process.Close();

        var dir = new DirectoryInfo(unZipDir);

        FindFile(dir, Compressfiles);

    }

    else

    {

//message = "請先安裝winrar程序,再上傳文件";

    }

}


//查找所有文件

public void FindFile(DirectoryInfo di, List<FileInfo> files)

{

    FileInfo[] fis = di.GetFiles();

    files.AddRange(fis);

    DirectoryInfo[] dis = di.GetDirectories();

    for (int j = 0; j < dis.Length; j++)

    {

        FindFile(dis[j], files);

    }

}

#endregion


該文章在 2025/2/13 17:16:39 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved