TagLib 1.6.1 (TagLib: TagLib::File Class Reference)

TagLib::File Class Reference

A file class with some useful methods for tag manipulation. More...

#include <tfile.h>

Inheritance diagram for TagLib::File:

List of all members.

Public Types

enum  Position { Beginning, Current, End }

Public Member Functions

virtual ~File ()
FileName name () const
virtual Tagtag () const =0
virtual AudioPropertiesaudioProperties () const =0
virtual bool save ()=0
ByteVector readBlock (ulong length)
void writeBlock (const ByteVector &data)
long find (const ByteVector &pattern, long fromOffset=0, const ByteVector &before=ByteVector::null)
long rfind (const ByteVector &pattern, long fromOffset=0, const ByteVector &before=ByteVector::null)
void insert (const ByteVector &data, ulong start=0, ulong replace=0)
void removeBlock (ulong start=0, ulong length=0)
bool readOnly () const
bool isOpen () const
bool isValid () const
void seek (long offset, Position p=Beginning)
void clear ()
long tell () const
long length ()

Static Public Member Functions

static bool isReadable (const char *file)
static bool isWritable (const char *name)

Protected Member Functions

 File (FileName file)
void setValid (bool valid)
void truncate (long length)

Static Protected Member Functions

static uint bufferSize ()


Detailed Description

A file class with some useful methods for tag manipulation.

This class is a basic file class with some methods that are particularly useful for tag editors. It has methods to take advantage of ByteVector and a binary search method for finding patterns in a file.


Member Enumeration Documentation

Position in the file used for seeking.

Enumerator:
Beginning  Seek from the beginning of the file.
Current  Seek from the current position in the file.
End  Seek from the end of the file.


Constructor & Destructor Documentation

TagLib::File::File ( FileName  file  )  [protected]

Construct a File object and opens the file. file should be a be a C-string in the local file system encoding.

Note:
Constructor is protected since this class should only be instantiated through subclasses.

Reimplemented in TagLib::Ogg::File.


Member Function Documentation

virtual AudioProperties* TagLib::File::audioProperties (  )  const [pure virtual]

Returns a pointer to this file's audio properties. This should be reimplemented in the concrete subclasses. If no audio properties were read then this will return a null pointer.

Implemented in TagLib::ASF::File, TagLib::FLAC::File, TagLib::MP4::File, TagLib::MPC::File, TagLib::MPEG::File, TagLib::Ogg::FLAC::File, TagLib::Ogg::Speex::File, TagLib::Ogg::Vorbis::File, TagLib::RIFF::AIFF::File, TagLib::RIFF::WAV::File, TagLib::TrueAudio::File, and TagLib::WavPack::File.

static uint TagLib::File::bufferSize (  )  [static, protected]

Returns the buffer size that is used for internal buffering.

void TagLib::File::clear (  ) 

Reset the end-of-file and error flags on the file.

long TagLib::File::find ( const ByteVector pattern,
long  fromOffset = 0,
const ByteVector before = ByteVector::null 
)

Returns the offset in the file that pattern occurs at or -1 if it can not be found. If before is set, the search will only continue until the pattern before is found. This is useful for tagging purposes to search for a tag before the synch frame.

Searching starts at fromOffset, which defaults to the beginning of the file.

Note:
This has the practial limitation that pattern can not be longer than the buffer size used by readBlock(). Currently this is 1024 bytes.

void TagLib::File::insert ( const ByteVector data,
ulong  start = 0,
ulong  replace = 0 
)

Insert data at position start in the file overwriting replace bytes of the original content.

Note:
This method is slow since it requires rewriting all of the file after the insertion point.

bool TagLib::File::isOpen (  )  const

Since the file can currently only be opened as an argument to the constructor (sort-of by design), this returns if that open succeeded.

static bool TagLib::File::isReadable ( const char *  file  )  [static]

Returns true if file can be opened for reading. If the file does not exist, this will return false.

bool TagLib::File::isValid (  )  const

Returns true if the file is open and readble.

static bool TagLib::File::isWritable ( const char *  name  )  [static]

Returns true if file can be opened for writing.

long TagLib::File::length (  ) 

Returns the length of the file.

FileName TagLib::File::name (  )  const

Returns the file name in the local file system encoding.

ByteVector TagLib::File::readBlock ( ulong  length  ) 

Reads a block of size length at the current get pointer.

bool TagLib::File::readOnly (  )  const

Returns true if the file is read only (or if the file can not be opened).

void TagLib::File::removeBlock ( ulong  start = 0,
ulong  length = 0 
)

Removes a block of the file starting a start and continuing for length bytes.

Note:
This method is slow since it involves rewriting all of the file after the removed portion.

long TagLib::File::rfind ( const ByteVector pattern,
long  fromOffset = 0,
const ByteVector before = ByteVector::null 
)

Returns the offset in the file that pattern occurs at or -1 if it can not be found. If before is set, the search will only continue until the pattern before is found. This is useful for tagging purposes to search for a tag before the synch frame.

Searching starts at fromOffset and proceeds from the that point to the beginning of the file and defaults to the end of the file.

Note:
This has the practial limitation that pattern can not be longer than the buffer size used by readBlock(). Currently this is 1024 bytes.

virtual bool TagLib::File::save (  )  [pure virtual]

Save the file and its associated tags. This should be reimplemented in the concrete subclasses. Returns true if the save succeeds.

Warning:
On UNIX multiple processes are able to write to the same file at the same time. This can result in serious file corruption. If you are developing a program that makes use of TagLib from multiple processes you must insure that you are only doing writes to a particular file from one of them.

Implemented in TagLib::ASF::File, TagLib::FLAC::File, TagLib::MP4::File, TagLib::MPC::File, TagLib::MPEG::File, TagLib::Ogg::FLAC::File, TagLib::Ogg::File, TagLib::Ogg::Speex::File, TagLib::Ogg::Vorbis::File, TagLib::RIFF::AIFF::File, TagLib::RIFF::WAV::File, TagLib::TrueAudio::File, and TagLib::WavPack::File.

void TagLib::File::seek ( long  offset,
Position  p = Beginning 
)

Move the I/O pointer to offset in the file from position p. This defaults to seeking from the beginning of the file.

See also:
Position

void TagLib::File::setValid ( bool  valid  )  [protected]

Marks the file as valid or invalid.

See also:
isValid()

virtual Tag* TagLib::File::tag (  )  const [pure virtual]

long TagLib::File::tell (  )  const

Returns the current offset within the file.

void TagLib::File::truncate ( long  length  )  [protected]

Truncates the file to a length.

void TagLib::File::writeBlock ( const ByteVector data  ) 

Attempts to write the block data at the current get pointer. If the file is currently only opened read only -- i.e. readOnly() returns true -- this attempts to reopen the file in read/write mode.

Note:
This should be used instead of using the streaming output operator for a ByteVector. And even this function is significantly slower than doing output with a char[].


The documentation for this class was generated from the following file: