BALL::File Class Reference
[Operating system support]

File Class. More...

#include <file.h>

Inheritance diagram for BALL::File:
Inheritance graph
[legend]

List of all members.


Classes

class CannotWrite
Exception CannotWrite A given file could not be written, either because its not open or it has a wrong open mode. More...

Public Types

Type definitions
typedef std::ios::openmode OpenMode
File open modes.

Public Member Functions

Constructors and Destructors
File ()
Default constructor.
File (const String &name, OpenMode open_mode=std::ios::in) throw (Exception::FileNotFound)
Construct new File object from the file name and open the file.
File (const File &file) throw (Exception::FileNotFound)
Copy constructor.
virtual ~File ()
Destructor.
virtual void clear ()
Clear the File object.
Assignment
const File & operator= (const File &file)
Assignment operator.
Debugging and Diagnostics
bool isValid () const
Test if the file is valid.

Static Public Attributes

Constants
static const OpenMode MODE_IN
Open for input (default).
static const OpenMode MODE_OUT
Open for output.
static const OpenMode MODE_APP
Append. Seek to end before each write operation.
static const OpenMode MODE_BINARY
Binary mode.
static const OpenMode MODE_ATE
Seek to end directly after opening.
static const OpenMode MODE_TRUNC
Truncate an existing file.

Protected Attributes

String name_
String original_name_
OpenMode open_mode_
bool is_open_
bool is_temporary_

Static Protected Attributes

static TransformationManager transformation_manager_
static Size transformation_methods_

Enums

enum Transformation { TRANSFORMATION__EXEC = 1, TRANSFORMATION__FILTER = 2, TRANSFORMATION__URL = 3 }
Transformation types for file. More...
enum Type {
TYPE__UNKNOWN = 0, TYPE__DIRECTORY = 1, TYPE__CHAR_SPECIAL_FILE = 2, TYPE__BLOCK_SPECIAL_FILE = 3,
TYPE__REGULAR_FILE = 4, TYPE__SYMBOLIC_LINK = 5, TYPE__SOCKET = 6, TYPE__FIFO_SPECIAL_FILE = 7
}
Filetype.
static const String TRANSFORMATION_EXEC_PREFIX
Prefix for filenames that are created through the execution of commands "exec:".
static const String TRANSFORMATION_FILE_PREFIX
Prefix for files (to mimick URL-like behavior) "file:".
static const String TRANSFORMATION_FTP_PREFIX
Prefix for FTP-transfers "ftp://".
static const String TRANSFORMATION_HTTP_PREFIX
Prefix for HTTP-transfer "http://".

Accessors

bool open (const String &name, File::OpenMode open_mode=std::ios::in) throw (Exception::FileNotFound)
Open a given file.
bool reopen () throw (Exception::FileNotFound)
Reopen the file.
bool reopen (File::OpenMode open_mode) throw (Exception::FileNotFound)
Reopen the file with a different mode.
void close ()
Close the file.
const String & getName () const
Return the name of the file.
void setName (const String &name)
Close the file and point to an other file.
const String & getOriginalName () const
Size getSize () throw (Exception::FileNotFound)
Return the size of the file.
File::OpenMode getOpenMode () const
Return the open mode.
Type getType (bool trace_link) const throw (Exception::FileNotFound)
Return the filetype.
bool copyTo (const String &destination_name, Size buffer_size=4096) throw (Exception::FileNotFound)
Copy the file to a given destination.
bool moveTo (const String &destination_name) throw (Exception::FileNotFound)
Move the file to a given destination.
bool remove ()
Remove the file.
bool renameTo (const String &new_path) throw (Exception::FileNotFound)
Rename the file to a given name.
bool truncate (Size size=0) throw (Exception::FileNotFound)
Truncate the file.
std::fstream & getFileStream ()
Return the stream associated with this file.
static Size getSize (String name) throw (Exception::FileNotFound)
Return the size of a given file.
static Type getType (String name, bool trace_link) throw (Exception::FileNotFound)
Return the filetype of a given file.
static bool copy (String source_name, String destination_name, Size buffer_size=4096) throw (Exception::FileNotFound)
Copy a given file to a given destination.
static bool move (const String &source_name, const String &destination_name) throw (Exception::FileNotFound)
Move a given file to a given destination.
static bool remove (String name)
Remove the given file.
static bool rename (String old_path, String new_path) throw (Exception::FileNotFound)
Rename a file.
static bool truncate (String path, Size size=0) throw (Exception::FileNotFound)
Truncate a given file.
static bool createTemporaryFilename (String &temporary)
Create a temporary filename.

On-the-fly file transformation

See also:
TransformationManager


TransformationManager & getTransformationManager ()
Mutable access the TransformationManager.
const TransformationManager & getTransformationManager () const
Constant access to the TransformationManager.
static void enableTransformation (Transformation transformation)
static void disableTransformation (Transformation transformation)
static bool isTransformationEnabled (Transformation transformation)
static void registerTransformation (const String &pattern, const String &exec)
static void unregisterTransformation (const String &pattern)

Predicates

bool operator== (const File &file) const
Equality comparison operator.
bool operator!= (const File &file) const
Inequality comparison operator.
bool isOpen () const
Test if the file is opend.
bool isClosed () const
Test if the file is closed.
bool isAccessible () const throw (Exception::FileNotFound)
Test if the file can be accessed.
bool isCanonized () const throw (Exception::FileNotFound)
Test if the path of the file is canonized.
bool isReadable () const throw (Exception::FileNotFound)
Test if the file is readable.
bool isWritable () const throw (Exception::FileNotFound)
Test if the file is writeable.
bool isExecutable () const throw (Exception::FileNotFound)
Test if the file is executable.
static bool isAccessible (String name)
Test if a given file can be accessed.
static bool isReadable (String name) throw (Exception::FileNotFound)
Test if a given file is readable.
static bool isWritable (String name) throw (Exception::FileNotFound)
Test if a given file is writeable.
static bool isExecutable (String name) throw (Exception::FileNotFound)
Test if a given file is executable.

Detailed Description

File Class.

Member Typedef Documentation

typedef std::ios::openmode BALL::File::OpenMode

File open modes.

This type is used to describe the standard openmodes for files as described in Section 27.4.2.1.4 of the ANSI C++ standard.


Member Enumeration Documentation

Transformation types for file.

This enum defines some possible types for on-the-fly file transformation.


Constructor & Destructor Documentation

BALL::File::File ( const String & name,
OpenMode open_mode = std::ios::in
) throw (Exception::FileNotFound)

Construct new File object from the file name and open the file.

Parameters:
name the name of the file to be opend
open_mode the openmode to be used
See also:
open

BALL::File::File ( const File & file ) throw (Exception::FileNotFound)

Copy constructor.

The file is not opend.

Parameters:
file the File object to be copied (cloned)
See also:
open

virtual BALL::File::~File ( ) [virtual]

Destructor.

The file is closed.


Member Function Documentation

static bool BALL::File::copy ( String source_name,
String destination_name,
Size buffer_size = 4096
) throw (Exception::FileNotFound) [static]

Copy a given file to a given destination.

If a file with the destination name exists already, nothing happens.

Parameters:
source_name the name of the source file
destination_name the name of the destination file
buffer_size the buffer size to use while copying
Returns:
true if copying was successfull

bool BALL::File::copyTo ( const String & destination_name,
Size buffer_size = 4096
) throw (Exception::FileNotFound)

Copy the file to a given destination.

If a file with the destination name exists already, nothing happens.

Parameters:
destination_name the name of the destination file
buffer_size the buffer size to use while copying
Returns:
true if copying was successfull

static bool BALL::File::createTemporaryFilename ( String & temporary ) [static]

Create a temporary filename.

This method creates strings, starting at _AAAAAAA.TMP and tries if a file with this name exists. If not, the string is returned. If a file with this name exists, it continues to create names up to _ZZZZZZZ.TMP.

Parameters:
temporary reference to the temporary filename
Returns:
bool true if a temporary filename could be found

std::fstream& BALL::File::getFileStream ( )

Return the stream associated with this file.

Implemented just for convenience.

Returns:
std::fstream the stream

const String& BALL::File::getName ( ) const

Return the name of the file.

Returns:
String the name of the file

File::OpenMode BALL::File::getOpenMode ( ) const

Return the open mode.

Default is IN.

Returns:
int the open mode

static Size BALL::File::getSize ( String name ) throw (Exception::FileNotFound) [static]

Return the size of a given file.

Returns:
Size the size of the file

Size BALL::File::getSize ( ) throw (Exception::FileNotFound)

Return the size of the file.

If the file does not exist, 0 is returned.

Returns:
Size the size of the file

const TransformationManager& BALL::File::getTransformationManager ( ) const

Constant access to the TransformationManager.

File defines a static instance of TransformationManager to handle on-the-fly conversions of files (e.g. compression, charset conversion, etc.).

TransformationManager& BALL::File::getTransformationManager ( )

Mutable access the TransformationManager.

File defines a static instance of TransformationManager to handle on-the-fly conversions of files (e.g. compression, charset conversion, etc.).

Type BALL::File::getType ( bool trace_link ) const throw (Exception::FileNotFound)

Return the filetype.

Parameters:
trace_link true to follow links
Returns:
Type the filetype

static Type BALL::File::getType ( String name,
bool trace_link
) throw (Exception::FileNotFound) [static]

Return the filetype of a given file.

Parameters:
name the name of the file.
trace_link true to follow links
Returns:
Type the filetype

bool BALL::File::isAccessible ( ) const throw (Exception::FileNotFound)

Test if the file can be accessed.

Returns:
bool true if the file can be accessed

static bool BALL::File::isAccessible ( String name ) [static]

Test if a given file can be accessed.

Parameters:
name the name of the file to be tested
Returns:
bool true if the file can be accessed

bool BALL::File::isCanonized ( ) const throw (Exception::FileNotFound)

Test if the path of the file is canonized.

The path is compared before and after call of FileSystem::canonizePath(canonized_name).

See also:
FileSystem::canonizePath
Returns:
bool true if the path is canonized.

bool BALL::File::isClosed ( ) const

Test if the file is closed.

The standard constructor opens the file.

Returns:
bool true if the file is closed

bool BALL::File::isExecutable ( ) const throw (Exception::FileNotFound)

Test if the file is executable.

Returns:
true if the file is executable

static bool BALL::File::isExecutable ( String name ) throw (Exception::FileNotFound) [static]

Test if a given file is executable.

Parameters:
name the name of the file
Returns:
true if the file is executable

bool BALL::File::isOpen ( ) const

Test if the file is opend.

The standard constructor opens the file.

Returns:
bool true if the file is closed

bool BALL::File::isReadable ( ) const throw (Exception::FileNotFound)

Test if the file is readable.

Returns:
true if the file can be read

static bool BALL::File::isReadable ( String name ) throw (Exception::FileNotFound) [static]

Test if a given file is readable.

Parameters:
name the name of the file
Returns:
true if the file can be read

bool BALL::File::isValid ( ) const

Test if the file is valid.

If the filename was not set, false is returned. This function uses std::fstream::good().

Returns:
bool true if the file is valid

Reimplemented in BALL::ResourceFile.

Referenced by BALL::TRegularData3D< ValueType >::binaryRead(), BALL::TRegularData2D< ValueType >::binaryRead(), BALL::TRegularData1D< ValueType >::binaryRead(), BALL::TRegularData3D< ValueType >::binaryWrite(), and BALL::TRegularData1D< ValueType >::binaryWrite().

bool BALL::File::isWritable ( ) const throw (Exception::FileNotFound)

Test if the file is writeable.

Returns:
true if the file is writeable

static bool BALL::File::isWritable ( String name ) throw (Exception::FileNotFound) [static]

Test if a given file is writeable.

Parameters:
name the name of the file
Returns:
true if the file is writeable

static bool BALL::File::move ( const String & source_name,
const String & destination_name
) throw (Exception::FileNotFound) [static]

Move a given file to a given destination.

If a file with the destination name exists already, nothing happens.

Parameters:
source_name the name of the source file
destination_name the name of the destination file
Returns:
true if copying was successfull

bool BALL::File::moveTo ( const String & destination_name ) throw (Exception::FileNotFound)

Move the file to a given destination.

If a file with the destination name exists already, nothing happens.

Parameters:
destination_name the name of the destination file
Returns:
true if copying was successfull

bool BALL::File::open ( const String & name,
File::OpenMode open_mode = std::ios::in
) throw (Exception::FileNotFound)

Open a given file.

The standard constructor uses this method.

Parameters:
name the name of the file
open_mode the open mode, default is IN
Returns:
bool true if the file could be opened

Reimplemented in BALL::DCDFile, and BALL::DSN6File.

bool BALL::File::operator!= ( const File & file ) const

Inequality comparison operator.

Two File objects are inequal if they point not to the same canonized filename.

const File& BALL::File::operator= ( const File & file )

Assignment operator.

Assign the filename from file . The file is not opend.

bool BALL::File::operator== ( const File & file ) const

Equality comparison operator.

Two File objects are equal if they point to the same canonized filename.

bool BALL::File::remove ( )

Remove the file.

Returns:
bool true if the file could be removed

static bool BALL::File::remove ( String name ) [static]

Remove the given file.

Parameters:
name the name of the file to be removed
Returns:
bool true if the file could be removed

static bool BALL::File::rename ( String old_path,
String new_path
) throw (Exception::FileNotFound) [static]

Rename a file.

Parameters:
old_path the path and name of the file to be renamed
new_path the new path and name of the file
Returns:
bool true if the file could be renamed

bool BALL::File::renameTo ( const String & new_path ) throw (Exception::FileNotFound)

Rename the file to a given name.

If a file with the destination name exists already, nothing happens.

Parameters:
new_path the new path and name of the file
Returns:
bool true if the file could be renamed

bool BALL::File::reopen ( File::OpenMode open_mode ) throw (Exception::FileNotFound)

Reopen the file with a different mode.

The file is closed and reopend.

Parameters:
open_mode the new mode
Returns:
bool true if the file could be reopend

bool BALL::File::reopen ( ) throw (Exception::FileNotFound)

Reopen the file.

The file is closed and reopend.

Returns:
bool true if the file could be reopend

void BALL::File::setName ( const String & name )

Close the file and point to an other file.

Parameters:
name the new file

bool BALL::File::truncate ( Size size = 0 ) throw (Exception::FileNotFound)

Truncate the file.

Parameters:
size the new size of the file
Returns:
bool true if the file could be truncated

static bool BALL::File::truncate ( String path,
Size size = 0
) throw (Exception::FileNotFound) [static]

Truncate a given file.

Parameters:
path the path to the file
size the new size of the file
Returns:
bool true if the file could be truncated

Generated on Thu Aug 6 18:30:48 2009 for BALL by doxygen 1.5.8