jsFile jsFile

This handy non-visual component encapsulates basic File I/O.

Example:

jsFile.FileName := 'test.txt'; // this property set at design time
jsFile.FileType := ftText;   // this property set at design time
jsFile.FileAction := faRead  // this property set at design time

jsFile.OpenFile;  // opens the file
jsFile.ReadTextLine(sLine);  // reads a line into string sLine
ShowMessage('The line is ' + sLine);
jsFile.CloseFile;

 

type TFileType = (ftText, ftBinary);
type TFileAction = (faRead, faWrite);
type EFileError = Class(Exception);

TjsFile = class(TComponent)
private
    FbFileOpened : Boolean;
    FFileName : String;
    FFileList : TStringList;
    FFile : File of Byte;
    FFileType : TFileType;
    FFileAction : TFileAction;
    function GetFileName : String;
    procedure SetFileName(sFileName : String);
    function RecursiveDirDelete(sDir : String) : Boolean;
    function IsValidFile(sFileName : String) : Boolean;
    function IsValidDir(sDirName : String) : Boolean;
protected
public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
    function GetSizeInBytes : LongInt;
    function OpenFile : Boolean;
    procedure CloseFile;
    function ReadAByte(var AByte : Byte) : Boolean;
    function WriteAByte(AByte : Byte) : Boolean;
    function ReadTextLine(var sLine : String) : Boolean;
    function WriteTextLine(sLine : String) : Boolean;
    function ReadBinaryBuffer(var sBuffer : AnsiString; iBytesToRead : LongInt) : Boolean;
    function WriteBinaryBuffer(sBuffer : AnsiString; iBytesToWrite : LongInt) : Boolean;
    function SeekFromStart(iOffset : LongInt) : Boolean;
    function SeekFromEnd(iOffset : LongInt) : Boolean;
    function CopyFileTo(sDestName : String) : Boolean;
    function CopyFileListTo(sDestDir : String) : Boolean;
    function CopyDirAndItsChildDirs(sSourceDir, sDestDir : String) : Boolean;
    function DeleteFile : Boolean;
    function DeleteDirAndItsSubdirs(sDir : String) : Boolean;
published
    property FileName : String read GetFileName write SetFileName;
    property FileList : TStringList read FFileList write FFileList;
    property FileType : TFileType read FFileType write FFileType;
    property FileAction : TFileAction read FFileAction write FFileAction;
end;