< All Topics

Zip single file

Overview

The Zip File function compresses a single file into a ZIP archive. This is the simplest compression operation in Archive Manager Pro, perfect for quick file compression tasks.

Function Description

Node Name: Zip File
Category: Archive Manager
Type: Synchronous (blocking operation)

Compresses a single specified file and creates a ZIP archive containing that file. The operation completes immediately and returns a boolean indicating success or failure.

Input Parameters

Parameter Type Description
Path to File String Full absolute path to the file you want to compress
Path to Zip String Full absolute path where the ZIP file should be created
Delete After Compression Boolean If true, deletes the original file after successful compression

Output Parameters

Parameter Type Description
Return Value Boolean true if compression succeeded, false if it failed

Setup Steps

1. Add the Zip File Node

  • In your Blueprint, right-click in the Event Graph
  • Search for “Zip File”
  • Add the Zip File node from the Archive Manager category

2. Configure Input Paths

  • Path to File: Enter the full path to your source file
    • Example: F:\Repos\test\ArchiveManager\sample_text.txt
  • Path to Zip: Enter the full path for the output ZIP file
    • Example: F:\Repos\test\ArchiveManager\single-file.zip

3. Set Compression Options

  • Delete After Compression:
    • ☑️ Checked: Original file is deleted after successful compression
    • ☐ Unchecked: Original file is preserved (recommended for safety)

4. Handle the Result

  • Connect the Return Value to a Branch node
  • True branch: Compression succeeded – add success actions
  • False branch: Compression failed – add error handling

5. Add Feedback (Recommended)

  • Connect a Print String node to show operation status
  • Example: “File zipped successfully!” or use Get Last Archive Error for failure details

Example Blueprint Setup

Common Use Cases

  • Single document backup: Compress important files before operations
  • File preparation: Compress files before upload or transfer
  • Space optimization: Reduce file size for storage
  • Archive creation: Create compressed versions of configuration files

Error Handling

If the operation fails (returns false), use the Get Last Archive Error node to retrieve specific error information:

  • File not found
  • Insufficient disk space
  • Permission denied
  • Invalid file path

Best Practices

  1. Always check the return value before proceeding
  2. Use absolute paths to avoid path resolution issues
  3. Test with small files first before processing large files
  4. Keep Delete After Compression unchecked until you’re confident in your setup
  5. Implement error handling to provide user feedback

Performance Notes

  • This is a synchronous operation – it will block until complete
  • For large files, consider using Zip Files (async) instead
  • Memory usage scales with file size during compression

C++ Usage

Basic Implementation

#include "ArchiveManagerBPLibrary.h"

// Single file compression
FString InputFile = TEXT("C:/MyFiles/document.txt");
FString OutputZip = TEXT("C:/MyFiles/document.zip");
bool DeleteOriginal = false;

bool Success = UArchiveManagerBPLibrary::ZipFile(InputFile, OutputZip, DeleteOriginal);

if (Success)
{
    UE_LOG(LogTemp, Log, TEXT("File compressed successfully: %s"), *OutputZip);
}
else
{
    FString Error = UArchiveManagerBPLibrary::GetLastArchiveError();
    UE_LOG(LogTemp, Error, TEXT("Compression failed: %s"), *Error);
}

With error handling

bool CompressSingleFile(const FString& FilePath, const FString& ZipPath)
{
    // Validate input file exists
    if (!FPaths::FileExists(FilePath))
    {
        UE_LOG(LogTemp, Error, TEXT("Input file does not exist: %s"), *FilePath);
        return false;
    }
    
    // Ensure output directory exists
    FString OutputDir = FPaths::GetPath(ZipPath);
    if (!FPaths::DirectoryExists(OutputDir))
    {
        IFileManager::Get().MakeDirectory(*OutputDir, true);
    }
    
    // Perform compression
    bool Result = UArchiveManagerBPLibrary::ZipFile(FilePath, ZipPath, false);
    
    if (!Result)
    {
        FString ErrorMsg = UArchiveManagerBPLibrary::GetLastArchiveError();
        UE_LOG(LogTemp, Error, TEXT("Zip operation failed: %s"), *ErrorMsg);
    }
    
    return Result;
}

Integration with game systems

// In a save game system
UCLASS()
class MYGAME_API USaveGameManager : public UObject
{
    GENERATED_BODY()
    
public:
    UFUNCTION(BlueprintCallable)
    bool CompressSaveFile(const FString& SaveFileName)
    {
        FString SavePath = FPaths::ProjectSavedDir() / TEXT("SaveGames") / SaveFileName;
        FString ZipPath = SavePath + TEXT(".zip");
        
        return UArchiveManagerBPLibrary::ZipFile(SavePath, ZipPath, true); // Delete original
    }
};
Table of Contents