PTLib
Version 2.18.8
|
A class representing a a structured file that is portable accross CPU architectures. More...
#include <textfile.h>
Public Member Functions | |
Construction | |
PTextFile () | |
Create a text file object but do not open it. More... | |
PTextFile (OpenMode mode, OpenOptions opts=ModeDefault) | |
Create a unique temporary file name, and open the file in the specified mode and using the specified options. More... | |
PTextFile (const PFilePath &name, OpenMode mode=ReadWrite, OpenOptions opts=ModeDefault) | |
Create a text file object with the specified name and open it in the specified mode and with the specified options. More... | |
Line I/O functions | |
PBoolean | ReadLine (PString &str) |
Read a line from the text file. More... | |
PBoolean | WriteLine (const PString &str) |
Read a line from the text file. More... | |
![]() | |
Comparison | Compare (const PObject &obj) const |
Determine the relative rank of the two objects. More... | |
virtual PString | GetName () const |
Get the platform and I/O channel type name of the channel. More... | |
virtual PBoolean | Read (void *buf, PINDEX len) |
Low level read from the file channel. More... | |
virtual PBoolean | Write (const void *buf, PINDEX len) |
Low level write to the file channel. More... | |
virtual PBoolean | Close () |
Close the file channel. More... | |
PFile () | |
Create a file object but do not open it. More... | |
P_DECLARE_BITWISE_ENUM_EX (OpenOptions, 7,(NoOptions, MustExist, Create, Truncate, Exclusive, Temporary, DenySharedRead, DenySharedWrite), ModeDefault=-1) | |
When a file is opened, a number of options may be associated with the open file. More... | |
PFile (OpenMode mode, OpenOptions opts=ModeDefault) | |
Create a unique temporary file name, and open the file in the specified mode and using the specified options. More... | |
PFile (const PFilePath &name, OpenMode mode=ReadWrite, OpenOptions opts=ModeDefault) | |
Create a file object with the specified name and open it in the specified mode and with the specified options. More... | |
~PFile () | |
Close the file on destruction. More... | |
bool | Exists () const |
Check for file existance. More... | |
bool | Access (OpenMode mode) |
Check for file access modes. More... | |
bool | Touch (const PTime &accessTime=0) |
Set access & modification times for file. More... | |
bool | Touch (const PTime &accessTime, const PTime &modTime) |
bool | Remove (bool force=false) |
Delete the current file. More... | |
bool | Rename (const PString &newname, bool force=false) |
Change the current files name. More... | |
bool | Copy (const PFilePath &newname, bool force=false, bool recurse=false) |
Make a copy of the current file. More... | |
bool | Move (const PFilePath &newname, bool force=false, bool recurse=false) |
Move the current file. More... | |
const PFilePath & | GetFilePath () const |
Get the full path name of the file. More... | |
void | SetFilePath (const PString &path) |
Set the full path name of the file. More... | |
bool | Open (OpenMode mode=ReadWrite, OpenOptions opts=ModeDefault) |
Open the current file in the specified mode and with the specified options. More... | |
bool | Open (OpenMode mode, OpenOptions opts, PFileInfo::Permissions permissions) |
Open the specified file name in the specified mode and with the specified options and permissions. More... | |
bool | Open (const PFilePath &name, OpenMode mode=ReadWrite, OpenOptions opts=ModeDefault) |
Open the specified file name in the specified mode and with the specified options. More... | |
bool | Open (const PFilePath &name, OpenMode mode, OpenOptions opts, PFileInfo::Permissions permissions) |
Open the specified file name in the specified mode and with the specified options and permissions. More... | |
virtual off_t | GetLength () const |
Get the current size of the file. More... | |
virtual PBoolean | SetLength (off_t len) |
Set the size of the file, padding with 0 bytes if it would require expanding the file, or truncating it if being made shorter. More... | |
virtual PBoolean | SetPosition (off_t pos, FilePositionOrigin origin=Start) |
Set the current active position in the file for the next read or write operation. More... | |
virtual off_t | GetPosition () const |
Get the current active position in the file for the next read or write operation. More... | |
bool | IsEndOfFile () const |
Determine if the current file position is at the end of the file. More... | |
bool | GetInfo (PFileInfo &info) |
Get information (eg protection, timestamps) on the current file. More... | |
bool | SetPermissions (PFileInfo::Permissions permissions) |
Set permissions on the current file. More... | |
![]() | |
PBoolean | SetErrorValues (Errors errorCode, int osError, ErrorGroup group=LastGeneralError) |
Set error values to those specified. More... | |
virtual PINDEX | HashFunction () const |
Calculate a hash value for use in sets and dictionaries. More... | |
virtual PBoolean | IsOpen () const |
Determine if the channel is currently open. More... | |
virtual P_INT_PTR | GetHandle () const |
Get the integer operating system handle for the channel. More... | |
FILE * | FDOpen (const char *mode) |
Re-open the device using the stdio library. More... | |
virtual PChannel * | GetBaseReadChannel () const |
Get the base channel of channel indirection using PIndirectChannel. More... | |
virtual PChannel * | GetBaseWriteChannel () const |
Get the base channel of channel indirection using PIndirectChannel. More... | |
virtual bool | CloseBaseReadChannel () |
Close the base channel of channel indirection using PIndirectChannel. More... | |
virtual bool | CloseBaseWriteChannel () |
Close the base channel of channel indirection using PIndirectChannel. More... | |
void | SetReadTimeout (const PTimeInterval &time) |
Set the timeout for read operations. More... | |
PTimeInterval | GetReadTimeout () const |
Get the timeout for read operations. More... | |
virtual PINDEX | GetLastReadCount () const |
Get the number of bytes read by the last Read() call. More... | |
virtual PINDEX | SetLastReadCount (PINDEX count) |
virtual int | ReadChar () |
Read a single character from the channel. More... | |
PBoolean | ReadBlock (void *buf, PINDEX len) |
Read len bytes into the buffer from the channel. More... | |
PString | ReadString (PINDEX len) |
Read len character into a string from the channel. More... | |
void | SetWriteTimeout (const PTimeInterval &time) |
Set the timeout for write operations to complete. More... | |
PTimeInterval | GetWriteTimeout () const |
Get the timeout for write operations to complete. More... | |
virtual PBoolean | Write (const void *buf, PINDEX len, const void *) |
Low level write to the channel with marker. More... | |
virtual PINDEX | GetLastWriteCount () const |
Get the number of bytes written by the last Write() call. More... | |
virtual PINDEX | SetLastWriteCount (PINDEX count) |
PBoolean | WriteChar (int c) |
Write a single character to the channel. More... | |
PBoolean | WriteString (const PString &str) |
Write a string to the channel. More... | |
~PChannel () | |
Close down the channel. More... | |
Errors | GetErrorCode (ErrorGroup group=NumErrorGroups) const |
Get normalised error code. More... | |
int | GetErrorNumber (ErrorGroup group=NumErrorGroups) const |
Get OS errro code. More... | |
virtual PString | GetErrorText (ErrorGroup group=NumErrorGroups) const |
Get error message description. More... | |
virtual bool | ReadAsync (AsyncContext &context) |
Begin an asynchronous read from channel. More... | |
virtual void | OnReadComplete (AsyncContext &context) |
User callback function for when a ReadAsync() call has completed or timed out. More... | |
virtual bool | WriteAsync (AsyncContext &context) |
Begin an asynchronous write from channel. More... | |
virtual void | OnWriteComplete (AsyncContext &context) |
User callback function for when a WriteAsync() call has completed or timed out. More... | |
virtual PBoolean | Shutdown (ShutdownValue option) |
Close one or both of the data streams associated with a channel. More... | |
virtual bool | SetLocalEcho (bool localEcho) |
Set local echo mode. More... | |
virtual bool | FlowControl (const void *flowData) |
Flow Control information Pass data to the channel for flowControl determination. More... | |
PBoolean | SetBufferSize (PINDEX newSize) |
Set the iostream buffer size for reads and writes. More... | |
PBoolean | SendCommandString (const PString &command) |
Send a command meta-string. More... | |
void | AbortCommandString () |
Abort a command string that is in progress. More... | |
![]() | |
__inline unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
__inline void | SetTraceContextIdentifier (unsigned id) |
__inline void | SetTraceContextIdentifier (const PObject &obj) |
__inline void | SetTraceContextIdentifier (const PObject *obj) |
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
virtual | ~PObject () |
__inline const char * | GetClass () const |
__inline bool | IsClass (const char *name) const |
__inline const PObject * | PTraceObjectInstance () const |
virtual PObject * | Clone () const |
Create a copy of the class on the heap. More... | |
template<class CLS > | |
CLS * | CloneAs () const |
As for Clone() but converts to specified type. More... | |
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
Determine the byte wise comparison of two objects. More... | |
bool | operator== (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator!= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator< (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator> (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator<= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator>= (const PObject &obj) const |
Compare the two objects. More... | |
virtual void | PrintOn (ostream &strm) const |
Output the contents of the object to the stream. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
Additional Inherited Members | |
![]() | |
enum | OpenMode { ReadOnly, WriteOnly, ReadWrite } |
When a file is opened, it may restrict the access available to operations on the object instance. More... | |
enum | FilePositionOrigin { Start = SEEK_SET, Current = SEEK_CUR, End = SEEK_END } |
Options for the origin in setting the file position. More... | |
![]() | |
enum | PXBlockType { PXReadBlock, PXWriteBlock, PXAcceptBlock, PXConnectBlock } |
enum | Errors { NoError, NotFound, FileExists, DiskFull, AccessDenied, DeviceInUse, BadParameter, NoMemory, NotOpen, Timeout, Interrupted, BufferTooSmall, Miscellaneous, ProtocolFailure, Unavailable, NumNormalisedErrors } |
Normalised error codes. More... | |
enum | ErrorGroup { LastReadError, LastWriteError, LastGeneralError, NumErrorGroups } |
Error groups. More... | |
typedef PNotifierTemplate < PChannel::AsyncContext & > | AsyncNotifier |
enum | ShutdownValue { ShutdownRead = 0, ShutdownWrite = 1, ShutdownReadAndWrite = 2 } |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
![]() | |
static bool | Exists (const PFilePath &name) |
Check for file existance. More... | |
static bool | Access (const PFilePath &name, OpenMode mode) |
Check for file access modes. More... | |
static bool | Touch (const PFilePath &name, const PTime &accessTime=0) |
Set access & modification times for file. More... | |
static bool | Touch (const PFilePath &name, const PTime &accessTime, const PTime &modTime) |
static bool | Remove (const PFilePath &name, bool force=false) |
Delete the specified file. More... | |
static bool | Remove (const PString &name, bool force=false) |
static bool | Rename (const PFilePath &oldname, const PString &newname, bool force=false) |
Change the specified files name. More... | |
static bool | Copy (const PFilePath &oldname, const PFilePath &newname, bool force=false, bool recurse=false) |
Make a copy of the specified file. More... | |
static bool | Move (const PFilePath &oldname, const PFilePath &newname, bool force=false, bool recurse=false) |
Move the specified file. More... | |
static bool | GetInfo (const PFilePath &name, PFileInfo &info) |
Get information (eg protection, timestamps) on the specified file. More... | |
static bool | SetPermissions (const PFilePath &name, PFileInfo::Permissions permissions) |
Set permissions on the specified file. More... | |
![]() | |
static PString | GetErrorText (Errors lastError, int osError=0) |
Get error message description. More... | |
![]() | |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject *from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject *from) |
static __inline const char * | Class () |
static __inline const PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
template<typename T > | |
static Comparison | Compare2 (T v1, T v2) |
Compare two types, returning Comparison type. More... | |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
![]() | |
virtual bool | InternalOpen (OpenMode mode, OpenOptions opts, PFileInfo::Permissions permissions) |
![]() | |
PChannel (const PChannel &) | |
PChannel & | operator= (const PChannel &) |
virtual PBoolean | ConvertOSError (P_INT_PTR libcReturnValue, ErrorGroup group=LastGeneralError) |
Convert an operating system error into platform independent error. More... | |
int | ReadCharWithTimeout (PTimeInterval &timeout) |
Read a character with specified timeout. More... | |
PBoolean | ReceiveCommandString (int nextChar, const PString &reply, PINDEX &pos, PINDEX start) |
bool | CheckNotOpen () |
virtual int | os_errno () const |
PBoolean | PXSetIOBlock (PXBlockType type, const PTimeInterval &timeout) |
P_INT_PTR | GetOSHandleAsInt () const |
int | PXClose () |
PDECLARE_MUTEX (px_threadMutex) | |
PDECLARE_MUTEX (px_writeMutex) | |
PChannel () | |
Create the channel. More... | |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
![]() | |
PFilePath | m_path |
The fully qualified path name for the file. More... | |
bool | m_removeOnClose |
File is to be removed when closed. More... | |
![]() | |
PTimeInterval | readTimeout |
Timeout for read operations. More... | |
PTimeInterval | writeTimeout |
Timeout for write operations. More... | |
atomic< P_INT_PTR > | os_handle |
The operating system file handle return by standard open() function. More... | |
PThreadLocalStorage< Status > | m_status [NumErrorGroups+1] |
PXBlockType | px_lastBlockType |
PThread * | px_readThread |
PThread * | px_writeThread |
PThread * | px_selectThread [3] |
PCriticalSection | px_selectMutex [3] |
![]() | |
unsigned | m_traceContextIdentifier |
A class representing a a structured file that is portable accross CPU architectures.
Essentially this will normalise the end of line character which differs fromplatform to platform.
PTextFile::PTextFile | ( | ) |
Create a text file object but do not open it.
It does not initially have a valid file name. However, an attempt to open the file using the PFile::Open()
function will generate a unique temporary file.
PTextFile::PTextFile | ( | OpenMode | mode, |
OpenOptions | opts = ModeDefault |
||
) |
Create a unique temporary file name, and open the file in the specified mode and using the specified options.
Note that opening a new, unique, temporary file name in ReadOnly mode will always fail. This would only be usefull in a mode and options that will create the file.
The PChannel::IsOpen()
function may be used after object construction to determine if the file was successfully opened.
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
PTextFile::PTextFile | ( | const PFilePath & | name, |
OpenMode | mode = ReadWrite , |
||
OpenOptions | opts = ModeDefault |
||
) |
Create a text file object with the specified name and open it in the specified mode and with the specified options.
The PChannel::IsOpen()
function may be used after object construction to determine if the file was successfully opened.
name | Name of file to open. |
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
Read a line from the text file.
What constitutes an end of line in the file is platform dependent.
Use the PChannel::GetLastError()
function to determine if there was some error other than end of file.
str | String into which line of text is read. |
Read a line from the text file.
What constitutes an end of line in the file is platform dependent.
Use the PChannel::GetLastError()
function to determine the failure mode.
str | String to write with end of line terminator. |