BALL::File Class Reference
[Operating system support]

#include <BALL/SYSTEM/file.h>

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

List of all members.

Classes

class  CannotWrite

Public Types

Type definitions

typedef std::ios::openmode OpenMode

Public Member Functions

Constructors and Destructors

 File ()
 File (const String &name, OpenMode open_mode=std::ios::in)
virtual ~File ()
virtual void clear ()
Debugging and Diagnostics

bool isValid () const

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 HashSet< Stringcreated_temp_filenames_
static TransformationManager transformation_manager_
static Size transformation_methods_

Private Member Functions

const Fileoperator= (const File &file)

Enums



enum  Transformation { TRANSFORMATION__EXEC = 1, TRANSFORMATION__FILTER = 2, TRANSFORMATION__URL = 3 }
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
}
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

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



bool open (const String &name, File::OpenMode open_mode=std::ios::in)
bool reopen ()
bool reopen (File::OpenMode open_mode)
void close ()
const StringgetName () const
void setName (const String &name)
const StringgetOriginalName () const
Size getSize ()
File::OpenMode getOpenMode () const
Type getType (bool trace_link) const
bool copyTo (const String &destination_name, Size buffer_size=4096)
bool moveTo (const String &destination_name)
bool remove ()
bool renameTo (const String &new_path)
bool truncate (Size size=0)
std::fstream & getFileStream ()
static Size getSize (String name)
static Type getType (String name, bool trace_link)
static bool copy (String source_name, String destination_name, Size buffer_size=4096)
static bool move (const String &source_name, const String &destination_name)
static bool remove (String name)
static bool rename (String old_path, String new_path)
static bool truncate (String path, Size size=0)
static bool createTemporaryFilename (String &temporary, const String &suffix=".TMP")

On-the-fly file transformation

See also:
TransformationManager


TransformationManagergetTransformationManager ()
const TransformationManagergetTransformationManager () const
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
bool operator!= (const File &file) const
bool isOpen () const
bool isClosed () const
bool isAccessible () const
bool isCanonized () const
bool isReadable () const
bool isWritable () const
bool isExecutable () const
static bool isAccessible (String name)
static bool isReadable (String name)
static bool isWritable (String name)
static bool isExecutable (String name)

Detailed Description

File Class.

Definition at line 137 of file file.h.


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.

Definition at line 168 of file file.h.


Member Enumeration Documentation

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

Enumerator:
TRANSFORMATION__EXEC 
TRANSFORMATION__FILTER 
TRANSFORMATION__URL 

Definition at line 201 of file file.h.

Filetype

Enumerator:
TYPE__UNKNOWN 
TYPE__DIRECTORY 
TYPE__CHAR_SPECIAL_FILE 
TYPE__BLOCK_SPECIAL_FILE 
TYPE__REGULAR_FILE 
TYPE__SYMBOLIC_LINK 
TYPE__SOCKET 
TYPE__FIFO_SPECIAL_FILE 

Definition at line 213 of file file.h.


Constructor & Destructor Documentation

BALL::File::File (  ) 

Default constructor.

BALL::File::File ( const String name,
OpenMode  open_mode = std::ios::in 
)

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

Parameters:
name the name of the file to be opened
open_mode the openmode to be used
See also:
open
Exceptions:
Exception::FileNotFound if the file should be read but could not be found
virtual BALL::File::~File (  )  [virtual]

Destructor. The file is closed.


Member Function Documentation

virtual void BALL::File::clear (  )  [virtual]
void BALL::File::close (  ) 

Close the file.

Reimplemented in BALL::ResourceFile.

static bool BALL::File::copy ( String  source_name,
String  destination_name,
Size  buffer_size = 4096 
) [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
Exceptions:
Exception::FileNotFound if the file could not be found
bool BALL::File::copyTo ( const String destination_name,
Size  buffer_size = 4096 
)

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
Exceptions:
Exception::FileNotFound if the file could not be found
static bool BALL::File::createTemporaryFilename ( String temporary,
const String suffix = ".TMP" 
) [static]

Create a temporary filename. This method creates strings, starting at _AAAAAAA, adds the suffix /suffix/ which defaults to .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.

Parameters:
temporary reference to the temporary filename
Returns:
bool true if a temporary filename could be found
static void BALL::File::disableTransformation ( Transformation  transformation  )  [static]
static void BALL::File::enableTransformation ( Transformation  transformation  )  [static]
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
const String& BALL::File::getOriginalName (  )  const
static Size BALL::File::getSize ( String  name  )  [static]

Return the size of a given file.

Returns:
Size the size of the file
Exceptions:
Exception::FileNotFound if the file could not be found
Size BALL::File::getSize (  ) 

Return the size of the file. If the file does not exist, 0 is returned.

Returns:
Size the size of the file
Exceptions:
Exception::FileNotFound if the file could not be found
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

Return the filetype.

Parameters:
trace_link true to follow links
Returns:
Type the filetype
Exceptions:
Exception::FileNotFound if the file could not be found
static Type BALL::File::getType ( String  name,
bool  trace_link 
) [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
Exceptions:
Exception::FileNotFound if the file could not be found
bool BALL::File::isAccessible (  )  const

Test if the file can be accessed.

Returns:
bool true if the file can be accessed
Exceptions:
Exception::FileNotfound if the file could not be found
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

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.
Exceptions:
Exception::FileNotfound if the file could not be found
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

Test if the file is executable.

Returns:
true if the file is executable
Exceptions:
Exception::FileNotfound if the file could not be found
static bool BALL::File::isExecutable ( String  name  )  [static]

Test if a given file is executable.

Parameters:
name the name of the file
Returns:
true if the file is executable
Exceptions:
Exception::FileNotfound if the file could not be found
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

Test if the file is readable.

Returns:
true if the file can be read
Exceptions:
Exception::FileNotfound if the file could not be found
static bool BALL::File::isReadable ( String  name  )  [static]

Test if a given file is readable.

Parameters:
name the name of the file
Returns:
true if the file can be read
Exceptions:
Exception::FileNotfound if the file could not be found
static bool BALL::File::isTransformationEnabled ( Transformation  transformation  )  [static]
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.

bool BALL::File::isWritable (  )  const

Test if the file is writeable.

Returns:
true if the file is writeable
Exceptions:
Exception::FileNotfound if the file could not be found
static bool BALL::File::isWritable ( String  name  )  [static]

Test if a given file is writeable.

Parameters:
name the name of the file
Returns:
true if the file is writeable
Exceptions:
Exception::FileNotfound if the file could not be found
static bool BALL::File::move ( const String source_name,
const String destination_name 
) [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
Exceptions:
Exception::FileNotFound if the file could not be found
bool BALL::File::moveTo ( const String destination_name  ) 

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
Exceptions:
Exception::FileNotFound if the file could not be found
bool BALL::File::open ( const String name,
File::OpenMode  open_mode = std::ios::in 
)

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
Exceptions:
Exception::FileNotFound if the file should be read but could not be found

Reimplemented in BALL::CCP4File, 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  )  [private]
bool BALL::File::operator== ( const File file  )  const

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

static void BALL::File::registerTransformation ( const String pattern,
const String exec 
) [static]
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 
) [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
Exceptions:
Exception::FileNotFound if the file could not be found
bool BALL::File::renameTo ( const String new_path  ) 

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
Exceptions:
Exception::FileNotFound if the file could not be found
bool BALL::File::reopen ( File::OpenMode  open_mode  ) 

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
Exceptions:
Exception::FileNotFound if the file should be read but could not be found
bool BALL::File::reopen (  ) 

Reopen the file. The file is closed and reopend.

Returns:
bool true if the file could be reopened
Exceptions:
Exception::FileNotFound if the file should be read but could not be found
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  ) 

Truncate the file.

Parameters:
size the new size of the file
Returns:
bool true if the file could be truncated
Exceptions:
Exception::FileNotFound if the file could not be found
static bool BALL::File::truncate ( String  path,
Size  size = 0 
) [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
Exceptions:
Exception::FileNotFound if the file could not be found
static void BALL::File::unregisterTransformation ( const String pattern  )  [static]

Member Data Documentation

Definition at line 609 of file file.h.

Definition at line 607 of file file.h.

Definition at line 608 of file file.h.

Append. Seek to end before each write operation.

Definition at line 182 of file file.h.

Seek to end directly after opening.

Definition at line 188 of file file.h.

Binary mode.

Definition at line 185 of file file.h.

const OpenMode BALL::File::MODE_IN [static]

Open for input (default).

Definition at line 176 of file file.h.

Open for output.

Definition at line 179 of file file.h.

Truncate an existing file.

Definition at line 191 of file file.h.

Reimplemented in BALL::PDBFile.

Definition at line 604 of file file.h.

Definition at line 606 of file file.h.

Definition at line 605 of file file.h.

Prefix for filenames that are created through the execution of commands "exec:".

Definition at line 234 of file file.h.

Prefix for files (to mimick URL-like behavior) "file:".

Definition at line 237 of file file.h.

Prefix for FTP-transfers "ftp://".

Definition at line 240 of file file.h.

Prefix for HTTP-transfer "http://".

Definition at line 243 of file file.h.

Definition at line 611 of file file.h.

Definition at line 612 of file file.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Generated by  doxygen 1.6.3