Тайтл тут!
А здесь просто какой-нибудь текст, который тоже (как и картинка)будет являеться ссылкой на пост...


Тайтл тут!
А здесь просто какой-нибудь текст, который тоже (как и картинка)будет являеться ссылкой на пост...


Тайтл тут!
А здесь просто какой-нибудь текст, который тоже (как и картинка)будет являеться ссылкой на пост...


Тайтл тут!
А здесь просто какой-нибудь текст, который тоже (как и картинка)будет являеться ссылкой на пост...


Последние статьи:

        
Свадебная прическа и макияж Свадебный стилист АЛИНА БАЙРАК в Алматы — Toibiznes.
Меня зовут Алина Байрак. Вот уже более 7-и лет я занимаюсь моим любимым делом — помогаю людям раскрыть всю их красоту.Я профессиональный визажист, стилист, мастер по прическам. Работаю и проживаю в городе

Свадебные прически на волосы средней длины
Красивая свадебная прическа – половина успешного образа невесты. Если вы хотите выглядеть в день свадьбы просто непревзойденно, обязательно задумайтесь над тем, какой будет ваша свадебная прическа!

Свадебные прически на каре с челкой, фатой
Свадьба – то событие, которое ждет любая девушка. И, конечно, выглядеть в этот важный день нужно соответственно. Прическа – важная составляющая образа невесты. Не имеет значение, какой длины у вас волосы.

Свадебные прически на длинные волосы с фатой или без нее – как выбрать?
 Каждая невеста знает, насколько волнительно, ответственно и в то же время приятно выбирать наряд для собственной свадьбы. Это касается всего образа – платья, прически, украшений и аксессуаров. Всё должно

Свадебные прически на длинные волосы с фатой: выбираем грамотно
 Перед самым ответственным днем в жизни каждая невеста решает непростую задачу: какая же прическа идеально дополнит образ и подойдет к свадебному платью? И действительно, выбор этот нелегкий, ведь сегодня

Свадебные прически из косичек
Лето золотая пора торжеств, это пора исполнения самых заветных и сокровенных желаний. Любая девушка мечтает встретиться со своим принцем. Для вас настал этот задушевный момент? Мы искренне вас поздравляем! Выбор

Свадебные прически на распущенные волосы: фото с фатой для средних, длинных прядей
К большой радости женщин модные тенденции свадебных причесок не ограничены одним стилем, исходя из которого стоит компоновать образ. Модные дома предлагают вариации образов и стилей, среди которых каждая

Свадебная прическа от студии НикаРо - красота с гарантией! | "Торжество" : : Организация свадьбы, детские праздники, день рождения, корпоративы
Будьте еще красивее в день своей свадьбы! Экономьте время на поисках заколок, шпилек, лаков, на поездке в салон - мы приедем к Вам и все привезем, и это будет бесплатно!   Мы вместе с Вами рассмотрим

Свадебные прически с фатой
Прически невесты с фатой могут быть самыми разными. Часто красивые свадебные прически с фатой не видны, скрыты под этим аксессуаром, который надевают во время официальной части свадебной церемонии

Свадебные прически с короткими волосами: 50 модных вариантов
Для любой женщины самым торжественным событием в жизни, бесспорно, является день её бракосочетания. Каждая девочка с детства представляет себе то, как она будет выглядеть в красивом белом платье с легкой


Как создать, извлечь и обновить файл Tar GZIP в Windows

  1. Команды Linux
  2. Примеры
  3. Команды 7zip
  4. Создать, извлечь и обновить файл TAR GZIP в C #
  5. Создать, извлечь и обновить файл TAR GZIP в C #
  6. Извлеките файл .tar.gz
  7. Обновите файл .tar.gz
  8. Исходный код

В последнее время нашей команде необходимо регулярно обновлять файлы Tar GZIP, созданные для Linux на Windows. GZIP - это формат файлов для сжатия и распаковки файлов. В отличие от ZIP, GZIP используется для сжатия только одного файла. Обычно нам приходится собирать файлы в один архив tar, а затем сжимать этот архив с помощью gzip (.tar.gz или .tgz). Я потратил некоторое время на поиски обходного пути упаковки файлов TAR GZIP в Windows.

Команды Linux

Windows 10 теперь поддерживает установку дистрибутивов Linux как подсистем. Для создания пакетов tar.gz удобно использовать команды Linux в инструментах командной строки.

Примеры

Создайте архив .tar.gz:

tar -czvf dwt.tar.gz dwt /

Извлечь архив в каталог

tar -xzvf dwt.tar.gz -C tmp /

Команды 7zip

7zip может сжимать и распаковывать файлы .tar.gz в Windows.

Создать .tar.gz:

7z a -ttar -so dwt.tar dwt / | 7z a -si dwt.tar.gz

Извлечь .tar.gz :

7z x dwt.tar.gz -so | 7z x -si-ттар

Обновить tar.gz :

7z x dwt.tar.gz && 7z u dwt.tar dwt && del dwt.tar.gz && 7z a dwt.tar.gz dwt.tar && del dwt.tar

Создать, извлечь и обновить файл TAR GZIP в C #

Для программной работы файлов .tar.gz мы можем использовать SharpZipLib , Учебник Образцы GZip и Tar Также очень полезно.

Создать, извлечь и обновить файл TAR GZIP в C #

Создайте файл .tar.gz

private void CreateTarGZ (строка tgzFilename, строка sourceDirectory) {Stream outStream = File.Create (tgzFilename); Поток gzoStream = new GZipOutputStream (outStream); TarArchive tarArchive = TarArchive.CreateOutputTarArchive (gzoStream); // Обратите внимание на то, что RootPath в настоящее время чувствителен к регистру и должен иметь прямую косую черту, например, «c: / temp» // и не должен заканчиваться косой чертой, в противном случае обрезается первый символ имени файла // Это планируется исправить в следующем выпуске tarArchive .RootPath = sourceDirectory.Replace ('\\', '/'); if (tarArchive.RootPath.EndsWith ("/")) tarArchive.RootPath = tarArchive.RootPath.Remove (tarArchive.RootPath.Length - 1); AddDirectoryFilesToTar (tarArchive, sourceDirectory, true, true); tarArchive.Close (); } private void AddDirectoryFilesToTar (TarArchive tarArchive, строка sourceDirectory, bool recurse, bool isRoot) {// При желании можно написать запись для самого каталога. // Укажите false для рекурсии, если мы добавим файлы каталога по отдельности. // TarEntry tarEntry; if (! isRoot) {tarEntry = TarEntry.CreateEntryFromFile (sourceDirectory); tarArchive.WriteEntry (tarEntry, false); } // Записать каждый файл в tar. // string [] filenames = Directory.GetFiles (sourceDirectory); foreach (строковое имя файла в именах файлов) {tarEntry = TarEntry.CreateEntryFromFile (filename); ЕЫпе (tarEntry.Name); tarArchive.WriteEntry (tarEntry, true); } if (recurse) {string [] directoryies = Directory.GetDirectories (sourceDirectory); foreach (строковый каталог в каталогах) AddDirectoryFilesToTar (tarArchive, directory, recurse, false); }}

Извлеките файл .tar.gz

public void ExtractTGZ (String gzArchiveName, String destFolder) {Stream inStream = File.OpenRead (gzArchiveName); Поток gzipStream = new GZipInputStream (inStream); TarArchive tarArchive = TarArchive.CreateInputTarArchive (gzipStream); tarArchive.ExtractContents (destFolder); tarArchive.Close (); gzipStream.Close (); inStream.Close (); }

Обновите файл .tar.gz

Обновление файла .tar.gz немного сложнее, потому что сначала нам нужно распаковать .tar.gz в .tar, а затем обновить .tar и снова сжать до .tar.gz.

Извлечь .tar.gz в .tar:

открытая строка ExtractGZipFile (строка gzipFileName, строка targetDir) {// Использовать буфер 4K. Любое большее - пустая трата. byte [] dataBuffer = новый байт [4096]; using (System.IO.Stream fs = new FileStream (gzipFileName, FileMode.Open, FileAccess.Read)) {using (GZipInputStream gzipStream = new GZipInputStream (fs)) {// Измените эту строку в соответствии с вашими потребностями fnOut = Path.Combine ( targetDir, Path.GetFileNameWithoutExtension (gzipFileName)); using (FileStream fsOut = File.Create (fnOut)) {StreamUtils.Copy (gzipStream, fsOut, dataBuffer); } return fnOut; }}}

Обновить .tar:

public void UpdateTar (строка tarFileName, строка targetFile, bool asciiTranslate) {использование (FileStream fsIn = новый FileStream (tarFileName, FileMode.Open, FileAccess.Read)) {строка tmpTar = Path.Combine (Path.GetDirectoryName (tarFileName)), " .tar "); using (FileStream fsOut = new FileStream (tmpTar, FileMode.OpenOrCreate, FileAccess.Write)) {TarOutputStream tarOutputStream = new TarOutputStream (fsOut); TarInputStream tarIn = new TarInputStream (fsIn); TarEntry tarEntry; while ((tarEntry = tarIn.GetNextEntry ())! = null) {if (tarEntry.IsDirectory) {continue; } // Преобразует косые черты Unix в именах файлов в обратные косые черты Windows // string name = tarEntry.Name.Replace ('/', Path.DirectorySeparatorChar); строка sourceFileName = Path.GetFileName (targetFile); строка targetFileName = Path.GetFileName (tarEntry.Name); if (sourceFileName.Equals (targetFileName)) {using (Stream inputStream = File.OpenRead (targetFile)) {long fileSize = inputStream.Length; TarEntry entry = TarEntry.CreateTarEntry (tarEntry.Name); // Должен установить размер, иначе TarOutputStream потерпит неудачу при превышении выходных данных. entry.Size = fileSize; // Добавить запись в поток tar перед записью данных. tarOutputStream.PutNextEntry (вход); // это скопировано из TarArchive.WriteEntryCore byte [] localBuffer = new byte [32 * 1024]; while (true) {int numRead = inputStream.Read (localBuffer, 0, localBuffer.Length); if (numRead <= 0) {break; } tarOutputStream.Write (localBuffer, 0, numRead); }} tarOutputStream.CloseEntry (); } else {tarOutputStream.PutNextEntry (tarEntry); if (asciiTranslate) {CopyWithAsciiTranslate (tarIn, tarOutputStream); } else {tarIn.CopyEntryContents (tarOutputStream); } tarOutputStream.CloseEntry (); }} tarIn.Close (); tarOutputStream.Close (); } File.Delete (tarFileName); File.Move (tmpTar, tarFileName); }}

Обновление .tar.gz:

private void UpdateTarGZ (строка tgzFilename, строка tarFileName) {Stream gzoStream = new GZipOutputStream (File.Create (tgzFilename)); using (FileStream source = File.Open (tarFileName, FileMode.Open)) {byte [] localBuffer = новый байт [32 * 1024]; while (true) {int numRead = source.Read (localBuffer, 0, localBuffer.Length); if (numRead <= 0) {break; } gzoStream.Write (localBuffer, 0, numRead); }} gzoStream.Close (); File.Delete (tarFileName); }

Создайте приложение:

dotnet publish -c Релиз -r win10-x64

Запустите приложение, используя 'dotne run' или 'targzip':

Запустите приложение, используя 'dotne run' или 'targzip':

Исходный код

https://github.com/yushulx/dotnet-tar-gzip