Skip over navigation

I/O Utility Classes

Classes to assist in various I/O related tasks

Version 1.0.1
Released 2014-01-11
Platforms Win32 & Win64
Framework VCL
Compatibilty Delphi 2005 & later


These classes are designed to assist in various I/O related tasks. Classes are provided to:

  • Simplify the opening of files in various different modes with specified security attributes and provide access to the file handle.
  • Simplify working with un-named pipes.
  • Handle the formatting of data read from pipes, for example reading Unicode strings.

These classes used to be included in the Console Application Runner Classes project to help handle standard I/O redirection but were pulled out into their own project because they have wider uses.

There are no demo projects included with the download. However, much of the code is used in some of the demos included with the Console Application Runner Classes.

Get The Code

You can download the latest version of the I/O Utility Classes directly from SourceForge as

Download v1.0.1

The I/O Utility Classes source code is hosted in the ddablib/ioutils GitHub repository. You can git clone or fork the repository as required.


The I/O Utility Classes are supplied in a zip file. Before installing you need to extract all the files from the zip file, preserving the directory structure. The following files will be extracted:

  • PJFileHandle.pas – source code of the class used to open files in various sharing and security modes.
  • PJPipe.pas – source code of the class used to encapsulate un-named pipes.
  • PJPipeFilters.pas – source code of classes used to filter output from pipes.
  • ReadMe.htm – read-me file.
  • ChangeLog.txt – project change log.
  • MPL-2.txt – the Mozilla Public License v2.0.
  • Documentation.URL – short-cut to the unit's online documentation.

There are three possible ways to use the units.

  1. The simplest way is to add PJFileHandle.pas, PJPipe.pas and PJPipeFilters.pasto your projects as you need them.
  2. To make the units easier to re-use you can either copy them to a folder on your Delphi search path, or add the folder where you extracted the units to the search path. You then simply use the units as required without needing to add them to your project.
  3. For maximum portability you can add the units to a Delphi design time package. If you need help doing this see here.


The I/O Utility Classes are comprehensively documented online here

The project's change log can be viewed here.

A read-me file (ReadMe.htm) is included in the project download.

Feedback & Queries

If you find any bugs or want to suggest a new feature please report them using the I/O Utility Classes issue tracker.

If you have created a bug fix or have implemented a new feature please open a pull request for it.

Should you have any queries about using the classes please read the documentation. If you can't find an answer in the documentation then post a message in the discussion group.


The I/O Utility Classes are open source. They are copyright © 2013-20414 by Peter Johnson. The source code is made available under the terms of the Mozilla Public License v2.0. All relevant trademarks are acknowledged.