mirror of
https://github.com/markjprice/cs11dotnet7.git
synced 2025-12-06 05:32:03 +01:00
66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
using System.Formats.Tar; // TarFile
|
|
|
|
try
|
|
{
|
|
string current = Environment.CurrentDirectory;
|
|
WriteInformation($"Current directory: {current}");
|
|
|
|
string sourceDirectory = Path.Combine(current, "images");
|
|
string destinationDirectory = Path.Combine(current, "extracted");
|
|
string tarFile = Path.Combine(current, "images-archive.tar");
|
|
|
|
if (!Directory.Exists(sourceDirectory))
|
|
{
|
|
WriteError($"The {sourceDirectory} directory must exist. Please create it and add some files to it.");
|
|
return;
|
|
}
|
|
|
|
if (File.Exists(tarFile))
|
|
{
|
|
// If the Tar archive file already exists then we must delete it.
|
|
File.Delete(tarFile);
|
|
WriteWarning($"{tarFile} already existed so it was deleted.");
|
|
}
|
|
|
|
WriteInformation(
|
|
$"Archiving directory: {sourceDirectory}\n To .tar file: {tarFile}");
|
|
|
|
TarFile.CreateFromDirectory(
|
|
sourceDirectoryName: sourceDirectory,
|
|
destinationFileName: tarFile,
|
|
includeBaseDirectory: true);
|
|
|
|
WriteInformation($"Does {tarFile} exist? {File.Exists(tarFile)}.");
|
|
|
|
if (!Directory.Exists(destinationDirectory))
|
|
{
|
|
// If the destination directory does not exist then we must create
|
|
// it before extracting a Tar archive to it.
|
|
Directory.CreateDirectory(destinationDirectory);
|
|
WriteWarning($"{destinationDirectory} did not exist so it was created.");
|
|
}
|
|
|
|
WriteInformation(
|
|
$"Extracting archive: {tarFile}\n To directory: {destinationDirectory}");
|
|
|
|
TarFile.ExtractToDirectory(
|
|
sourceFileName: tarFile,
|
|
destinationDirectoryName: destinationDirectory,
|
|
overwriteFiles: true);
|
|
|
|
if (Directory.Exists(destinationDirectory))
|
|
{
|
|
foreach (string dir in Directory.GetDirectories(destinationDirectory))
|
|
{
|
|
WriteInformation(
|
|
$"Extracted directory {dir} containing these files: " +
|
|
string.Join(',', Directory.EnumerateFiles(dir)
|
|
.Select(file => Path.GetFileName(file))));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
WriteError(ex.Message);
|
|
}
|