---
id: plugins-file
title: "File"
summary: "The 8 plugins in File: Collect files, Distribute files, File operation and 5 more."
audience: user
keywords: "CollectFiles, DistributeFiles, FileOperation, ReadFile, TelnetSsh, StreamCompress, StreamDecompress, WriteFile"
---
# File

Move and process files. **Read file** and **Write file** work with the environment's data folder; **Collect files** and **Distribute files** download and upload over FTP, FTPS and SFTP; **Stream compress** and **Stream decompress** handle archives; **File operation** keeps folders tidy; **Remote shell** runs shell or PowerShell scripts on other systems over SSH or Telnet.

```text
Timer → Collect files → Read file → CSV decoder → ... → File operation
```

Files travel as file streams, so readers, archives and decoders connect directly.

## Plugins

| Plugin | What it does | Pins |
|---|---|---|
| [Collect files](/documentation/plugins/file/collect-files) | Downloads files from a remote server over FTP, FTPS or SFTP into a local folder of the environment data folder and emits a `ViaFileInfo` for each downloaded file. Optionally deletes or renames the remote file afterwards and remembers collected file names to skip duplicates. | `Start`, `Output`, `Continue` |
| [Distribute files](/documentation/plugins/file/distribute-files) | Uploads files from a local folder of the environment data folder to a remote server over FTP, FTPS or SFTP. Either scans the whole local file group (e.g. on a Timer) or uploads the single file it receives as `ViaFileInfo`. Optionally deletes or moves the local file afterwards. The counterpart of **Collect files**. | `Input`, `Continue` |
| [File operation](/documentation/plugins/file/file-operation) | Housekeeping component that keeps the data and archive folders tidy. Each call scans a file group and moves, copies, compresses, decompresses or deletes every matching file. It is not part of the data path: it emits no file data, only `Continue` when it's done. Typically connected to a Timer. | `Input`, `Continue` |
| [Read file](/documentation/plugins/file/read-file) | Opens local files and passes them on as `ViaFileStream` (file info plus an open read stream). It either scans a folder of the environment data folder for files matching a mask (`Start` pin), or opens a single file given as `ViaFileInfo` (`Input` pin, e.g. from Collect files). | `Start`, `Input`, `Output`, `NoFiles` |
| [Remote shell](/documentation/plugins/file/telnet-ssh) | Runs a script on a remote system over SSH or Telnet for every incoming record (bash or another POSIX shell, or PowerShell on Windows and Linux servers over SSH) and returns the output as a `TextRecord`. Values from the input record can be injected into the script with placeholders. | `Input`, `Output` |
| [Stream compress](/documentation/plugins/file/stream-compress) | Packs incoming `ViaFileStream` records into an archive (ZIP, GZip, TAR, TAR.GZ or TAR.LZ) and emits the archive as a new `ViaFileStream`. The files of one batch (e.g. the entries of a decompressed archive, the files of one Collect files run) go into one archive; a file without a batch becomes its own archive. | `Input`, `Output` |
| [Stream decompress](/documentation/plugins/file/stream-decompress) | Unpacks an archive delivered as `ViaFileStream` (ZIP, GZip, TAR, TAR.GZ, RAR, 7-Zip) and emits every contained file as its own `ViaFileStream`. The entries of one archive can form a batch. | `Input`, `Output` |
| [Write file](/documentation/plugins/file/write-file) | Writes an incoming `ViaFileStream`, or a stream of `TextRecord`s, to a file in a local folder of the environment data folder. Typically the last step after Read file, Stream compress/decompress, an encoder or any component producing a file stream. | `Input` |
