Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

C# : Робота із архіватором 7z. Архівування, розпакування файлів, та задання пароля

Для роботи із 7z архіватором створимо наступний клас - Archiver7Zip.

7zip

Archiver7Zip

Для роботи необхідно буде використати наступні бібліотеки:

using System;
using System.Diagnostics;

System.Diagnostics - необхідна для запуску процесу архівування через командну стрічку.

public class Archiver7Zip
{
    private string exePath; //шлях до архіватора
    public Archiver7Zip() { }
    public Archiver7Zip(string programPath)
    {
        exePath = programPath;
    }
    public string ExePath{ get { return exePath; } set { exePath = value; } }

    public bool Create(string soursePath, string ArhivePath)
    {
        return CallProcess("a -t" + CheckTypeOfArchive(ArhivePath) + " \"" + ArhivePath + "\" \"" + soursePath + "\"");
    }
    //для архівування кількох файлів в один архів
    public bool Create(string[] soursePath, string ArhivePath)
    {
        string filesToZip = null;
        foreach (string filename in soursePath)
                filesToZip = filesToZip + "\"" + filename + "\" ";
        return CallProcess("a -t" + CheckTypeOfArchive(ArhivePath) + " \"" + ArhivePath + "\" " + filesToZip);
    }
    public bool Create(string soursePath, string ArhivePath, string password)
    {
        return CallProcess("a -t" + CheckTypeOfArchive(ArhivePath) + " \"" + ArhivePath + "\" \"" + soursePath + "\" - p" + password);
    }
    //для архівування кількох файлів в один архів з паролем
    public bool Create(string[] soursePath, string ArhivePath, string password)
    {
        string filesToZip = null;
        foreach (string filename in soursePath)
                filesToZip = filesToZip + "\"" + filename + "\" ";
        return CallProcess("a -t" + CheckTypeOfArchive(ArhivePath) + " \"" + ArhivePath + "\" " + filesToZip + " -p" + password);
    }
    public bool Extract(string soursePath, string destination)
    {
        return CallProcess("x -t" + CheckTypeOfArchive(soursePath) + " \"" + soursePath + "\" -o\"" + destination + "\"");
    }
    public bool Extract(string soursePath, string destination, string password)
    {
        return CallProcess("x -t" + CheckTypeOfArchive(soursePath) + " \"" + soursePath + "\" -o\"" + destination + "\" -p" + password);
    }
    private bool CallProcess(string arg)
    {
        try
        {
            ProcessStartInfo processInfo = new ProcessStartInfo(); //створення нового процесу
            processInfo.WindowStyle = ProcessWindowStyle.Hidden;
            processInfo.FileName = exePath;
            processInfo.Arguments = arg;
            Process process = Process.Start(processInfo); //запуск самого процесу
            process.WaitForExit();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
    private string CheckTypeOfArchive(string archiveName)
    {
        if (archiveName.Substring(archiveName.Length - 4, 4) == ".zip") return "zip";
        else if (archiveName.Substring(archiveName.Length - 4, 4) == ".tar") return "tar";
        else if (archiveName.Substring(archiveName.Length - 3, 3) == ".gz") return "gzip";
        else return "7z";
    }
}

Використання можливостей даного класу

Оголошуємо змінні для використання:

string workFolder = @"d:\test"; //шлях, що потрібно передати на архівування
string archiveFileName = @"d:\test.7z"; //шлях для збереження архіву із його форматом
string extractFolder = @"d:\Archive\test2"; //куди буде розархівовано дані
string password = "123"; //пароль для архіву

Створюємо екземпляр класу із заданням шляху до архіватора:

Archiver7Zip archive = new Archiver7Zip(@"C:\Program Files\7-Zip\7zG.exe");

Створення архіву:

archive.Create(workFolder, archiveFileName);

Розпакування архіву:

archive.Extract(archiveFileName, extractFolder);

Створення архіву із паролем:

archive.Create(workFolder, archiveFileName, password);

Архіви tar та gzip створюються без паролю!

Розпакування архіву із паролем:

archive.Extract(archiveFileName, extractFolder, password);

Додаткові можливості

1. Якщо необхідно зарахівувати файли певного формату, що розташовані в теці, можна створити маску для архівації:

string workFolder = @"d:\test\*.xl*";

Таким записом в архів буде передано усі Excel файли, що лежать в теці.

2. Якщо не вказано розширення архіву для створення, тоді він буде створений як файл 7z.


view274like0dislike0 avatard_l4w clock 2017-11-08 09:32

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com