NAME
Audio::TagLib::File - A file class with some useful methods for tag manipulation
DESCRIPTION
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.
- DESTROY()
-
Destroys this File instance.
- PV name()
-
Returns the file name in the local file system encoding.
- Tag tag() [pure virtual]
-
Returns this file's tag. This should be reimplemented in the concrete subclasses.
- AudioProperties audioProperties() [pure virtual]
-
Returns this file's audio properties. This should be reimplemented in the concrete subclasses. If no audio properties were read then this will return undef.
- BOOL save() [pure virtual]
-
Save the file and its associated tags. This should be reimplemented in the concrete subclasses. Returns true if the save succeeds.
- ByteVector readBlock(UV $length)
-
Reads a block of size $length at the current get pointer.
- void writeBlock(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.
- IV find(ByteVector $pattern, IV $fromOffset = 0, 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.
This has the practial limitation that $pattern can not be longer than the buffer size used by readBlock(). Currently this is 1024 bytes.
- IV rfind(ByteVector $pattern, IV $fromOffset = 0, ByteVector $before = ByteVector::null)
-
Returns the offset in the file that $pattern 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.
This has the practial limitation that $pattern can not be longer than the buffer size used by readBlock(). Currently this is 1024 bytes.
- void insert(ByteVector $data, UV $start = 0, UV $replace = 0)
-
Insert $data at position $start in the file overwriting $replace bytes of the original content.
This method is slow since it requires rewriting all of the file after the insertion point.
- void removeBlock(UV $start = 0, UV $length = 0)
-
Removes a block of the file starting a $start and continuing for $length bytes.
This method is slow since it involves rewriting all of the file after the removed portion.
- BOOL readOnly()
-
Returns true if the file is read only (or if the file can not be opened).
- BOOL isOpen()
-
Since the file can currently only be opened as an argument to the constructor (sort-of by design), this returns if that open succeeded.
- BOOL isValid()
-
Returns true if the file is open and readble and valid information for the Tag and / or AudioProperties was found.
- void seek(IV $offset, PV $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.
- void clear()
-
Reset the end-of-file and error flags on the file.
- IV tell()
-
Returns the current offset withing the file.
- IV length()
-
Returns the length of the file.
- BOOL isReadable(PV $file) [static]
-
Returns true if $file can be opened for reading. If the file does not exist, this will return false.
- BOOL isWritable(PV $file) [static]
-
Returns true if $file can be opened for writing.
- %_Position
-
Position in the file used for seeking. C<keys %Audio::TagLib::File::_Position> lists all available values used in Perl code.
EXPORT
None by default.
SEE ALSO
AUTHOR
Dongxu Ma, <dongxu@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2005 by Dongxu Ma
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.7 or, at your option, any later version of Perl 5 you may have available.