.NET Framework 에서 사용할 Zip library 로 DotNetZip 을 사용했습니다.


사용도 편하여 사용 code snippet ? 을 적어봅니다.


공식 Source Page 는 사용이 정지된 Codeplex 의 https://dotnetzip.codeplex.com/ 입니다.

해당 페이지에 사용법도 간단하게? 설명해 놓았습니다.


NuGet Package Manager 에서도 DotNetZip 이라는 Keyword 로 찾으시면 되겠습니다.

제가 사용한 Version 은 1.10.1 입니다.



참조 추가는 해주시고요.


using Ionic.Zip; 으로 사용을 시작하겠습니다.


using Ionic.Zip;


. . . 


string strFileName = string.Format("NewZip_{0}.zip", DateTime.Now.ToString("yyyyMMddHHmm"));

bool isOk = false;


saveFileDialog.CreatePrompt = false;

saveFileDialog.CheckFileExists = false;

saveFileDialog.CheckPathExists = true;

saveFileDialog.Filter = FileFilterZip;

saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

saveFileDialog.FileName = strFileName;


if (saveFileDialog.ShowDialog() == DialogResult.OK)

{

    strFileName = saveFileDialog.FileName;


    . . .


    using (ZipFile zip = new ZipFile { CompressionLevel = CompressionLevel.BestCompression })

    {

        . . . 

        strPath = Path.Combine(strFileFolderPath, "FileName.ext");


        if (File.Exists(strPath))

{

    // Zip 파일내에 FolderName 이라는 Folder 를 만들어 그 폴더 내에 저장합니다.

            zip.AddFile(fi.FullName, "FolderName"); 


            // Zip 파일의 Root 에 저장됩니다.

            // zip.AddFile(strPath, ""); 


            // 이렇게 하시면 System 의 Folder 구조대로 Zip 파일에 포함됩니다. 

            // 경로의 앞부분은 잘립니다.

    // 어느 Depth 에서 잘리는지 확인하지 못했네요. 직접 확인해보시길... ^^;

            // zip.AddFile(strPath); 

}


        if (Directory.Exists(strFolderPath))

{

    // Directory 를 Zip 파일에 포함하고자 할 때 사용하는 구문이겠죠?

            zip.AddDirectory(strFolderPath, strFolderName);


    // 이렇게 하시면 System 의 Folder 구조대로 Zip 파일에 포함됩니다. 

    // 이 경우도 마찬가지로 경로의 앞부분은 잘립니다. ^^;

            // zip.AddDirectory(strFolderPath); 

        }


string strRootPath = dirRoot.FullName;

        foreach (var d in dirRoot.GetDirectories())

        {

            // 이렇게도 사용할 수 있습니다.

    // 이렇게하면 Zip 파일내에 New_Folder 라는

    // Directory 를 생성하고 그 아래에 d Directory를 포함시킵니다.

    zip.AddDirectory(d.FullName, "New_Folder" 

+ d.FullName.Replace(strRootPath, string.Empty));

        } 

        . . .


        zip.Save(strFileName);

        isOk = true;

    }


    if (isOk)

    {

        DialogResult result = MessageBox.Show("Completed Export Work.\n\t Do you want to open result file's location?", "Network Designer", MessageBoxButtons.OKCancel);

        //압축에 성공했으니 압축결과물을 봐야겠죠? ^^


        if (result == DialogResult.OK)

        {

            if (File.Exists(strFileName))

            {

                Process.Start(new ProcessStartInfo("explorer.exe", " /select, " + strFileName));

            }

        }

    }

}


사이트에 설명이 되어 있는 내용도 있고 제가 요리조리 잔머리 굴리며 작성한 내용입니다.

Folder 이름이나 파일명을 바꾸느라 코드에 오류가 있을 수도 있습니다. ^^;

오류가 있더라도 큰 줄기만 잘 살펴보시고...

도움이 되었으면 합니다.



행복한 고수되셔요.


woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반응형

'Tools' 카테고리의 다른 글

[Tools] GUID Maker Updated.  (0) 2017.10.31
[Tools] Log4Net  (0) 2017.10.12
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
[Tools] GUID Maker  (0) 2017.06.21

 수많은 의존관계에 있는 JS 파일을 웹에 배포하는 것이 그리 쉬운일이 아닐겁니다.


이때 사용하는 것이 WebPack Module Bundler 입니다.


설치는 


npm install -g webpack


사용은 


webpack "WoojjaCustomer.js" "Bundle.js" --output-library='WoojjaLibrary'



webpack 에게 시작 JS 파일을 알려주면 참조관계에 맞추어 Bundle JS 파일을 생성해주며, WoojjaLibrary 라는 이름의 component 를 생성해줍니다.



HTML 에서의 사용은 


<script src="Bundle.js"></script>

<script>

var x = new WoojjaLibrary.Customer();

x.Add();

</script>


접근하는데도 편리하겠죠? 


행복한 고수되셔요~ ^^


woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


반응형

'Web > JavaScript' 카테고리의 다른 글

[JavaScript] 개발자가 필히 알아야 할 ES6 10가지 기능  (0) 2019.01.15
[JavaScript] SystemJS  (0) 2017.10.08
[JavaScript] Interval, Timeout  (0) 2017.02.11
[JavaScript] Markup Insertion  (0) 2017.02.10
[JavaScript] Pop Up 차단 확인  (0) 2017.01.26


JavaScript 사용시 JavaScript 파일의 참조와는 상관없이 SystemJS 에게 시작 JS 파일을 알려주면 알아서 참조되는 JavaScript 파일을 Loading 해줍니다.


설치는 

npm install systemjs



사용법은 


<script src="system.js"></script>

<script>

SystemJS.import('./Customer.js')

.then(function(module){

var cust = new module.Customer();

cust.Add();

}).catch(function (err)

{ console.error(err); });;

</script>


SystemJS.import 에서 시작 JS 파일을 알려주고 있습니다.


행복한 고수되셔요. ^^


woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반응형

'Web > JavaScript' 카테고리의 다른 글

[JavaScript] 개발자가 필히 알아야 할 ES6 10가지 기능  (0) 2019.01.15
[JavaScript] WebPack  (0) 2017.10.09
[JavaScript] Interval, Timeout  (0) 2017.02.11
[JavaScript] Markup Insertion  (0) 2017.02.10
[JavaScript] Pop Up 차단 확인  (0) 2017.01.26

+ Recent posts