Public Member Functions | List of all members
ZipEntry Class Reference

An entry in a zip archive on the local file system. More...

#include <ZipEntry.hpp>

Inheritance diagram for ZipEntry:
[legend]
Collaboration diagram for ZipEntry:
[legend]

Public Member Functions

std::unique_ptr< Uriappend (const std::string &pathComponent) const override
 Appends the path component to the supplied URI, returning a new URI. More...
 
std::unique_ptr< ByteReadResourcebyteReadResource () const override
 Get a byte read resource for the URI. More...
 
std::unique_ptr< ByteWriteResourcebyteWriteResource () override
 Get a byte write resource for the URI. More...
 
bool canReadFrom () const override
 Can data be read from the URI via a read resource. More...
 
bool canWriteTo () const override
 Can data be written to the URI via a write resource. More...
 
std::unique_ptr< Uriclone () const override
 Clone the concrete Uri. More...
 
void dispatch (UriDispatcher &dispatcher) const override
 Visitor pattern dispatching. More...
 
ZipEntryByteReadResource getByteReadResource () const
 Get a byte read resource for this zip entry. More...
 
ZipEntryUtf8To32ReadResource getUtf8To32ReadResource () const
 Get a byte read resource for this zip entry. More...
 
size_t hashcode () const noexcept override
 Get the URI's hash code. More...
 
bool isEntryDirectory () const
 Return true if the entry is an archive directory. More...
 
bool isEntryFile () const
 Return true if the entry is an archive file. More...
 
bool isIterable () const override
 Does the URI have a non-recursive iterator (examples: file and zip archive URIs). More...
 
bool isRecursivelyIterable () const override
 Does the URI have a recursive iterator (examples: file and zip archive URIs). More...
 
bool isRegularDirectory () const override
 Returns true if the URI points to a file directory. More...
 
bool isRegularFile () const override
 Returns true if the URI is a regular file. More...
 
std::unique_ptr< UriIteratoriterator () const override
 Get a (non-recursive) iterator. More...
 
std::string name () const
 Get the name of the entry. More...
 
bool operator== (const Uri &rhs) const override
 Compare the supplied URI to the current URI. More...
 
std::vector< char > readEntryAsBytes () const
 Get the contents of the entry as a char vector. More...
 
std::string readEntryAsString () const
 Get the contents of the entry as a UTF-8 string. More...
 
std::string readEntryComment () const
 Get the comment on the entry if one exists. More...
 
std::unique_ptr< RecursiveUriIteratorrecursiveIterator () const override
 Get a recursive iterator. More...
 
std::unique_ptr< Uriresolve (std::string_view path) const override
 Resolve the relative or absolute path, in reference to the current URI. More...
 
size_t size () const
 Get the uncompressed size of the entry in bytes. More...
 
std::string toRawString () const override
 Get a string representing the raw URI. More...
 
std::string toUriString () const override
 Get a string representing the URI, complete with scheme. More...
 
std::unique_ptr< Utf32To8WriteResourceutf32To8WriteResource () override
 Get a UTF-32 to UTF-8 write resource for the URI. More...
 
std::unique_ptr< Utf8To32ReadResourceutf8To32ReadResource () const override
 Get a UTF-8 to UTF-32 read resource for the URI. More...
 
- Public Member Functions inherited from Uri
virtual ~Uri ()=default
 Destroy the URI instance. More...
 
std::shared_ptr< UricloneToShared () const
 Clone the concrete Uri to a shared pointer. More...
 

Detailed Description

An entry in a zip archive on the local file system.

ZipEntry instances can only be obtained by iteration over a ZipFile.

If random read access is required over the entries of a zip file , it is better to use the Unzipper class directly instead of a ZipFile URI and iterator.

Member Function Documentation

◆ append()

std::unique_ptr<Uri> append ( const std::string &  pathComponent) const
inlineoverridevirtual

Appends the path component to the supplied URI, returning a new URI.

If the URI type does not permit appending of path components, UnsupportedOperationException is thrown.

Implements Uri.

◆ byteReadResource()

std::unique_ptr<ByteReadResource> byteReadResource ( ) const
inlineoverridevirtual

Get a byte read resource for the URI.

Exceptions
NotImplementedExceptionif the URI does not support reading
ResourceExceptionif the resource could not be created

Implements Uri.

◆ byteWriteResource()

std::unique_ptr<ByteWriteResource> byteWriteResource ( )
inlineoverridevirtual

Get a byte write resource for the URI.

Exceptions
NotImplementedExceptionif the URI does not support writing
ResourceExceptionif the resource could not be created

Implements Uri.

◆ canReadFrom()

bool canReadFrom ( ) const
inlineoverridevirtual

Can data be read from the URI via a read resource.

Implements Uri.

◆ canWriteTo()

bool canWriteTo ( ) const
inlineoverridevirtual

Can data be written to the URI via a write resource.

Implements Uri.

◆ clone()

std::unique_ptr<Uri> clone ( ) const
inlineoverridevirtual

Clone the concrete Uri.

Returns
a clone of the URI

Implements Uri.

◆ dispatch()

void dispatch ( UriDispatcher visitor) const
inlineoverridevirtual

Visitor pattern dispatching.

Parameters
visitorthe visitor to visit

Implements Uri.

◆ getByteReadResource()

ZipEntryByteReadResource getByteReadResource ( ) const
inline

Get a byte read resource for this zip entry.

Exceptions
ZipExceptionif the resource could not be created

◆ getUtf8To32ReadResource()

ZipEntryUtf8To32ReadResource getUtf8To32ReadResource ( ) const
inline

Get a byte read resource for this zip entry.

Exceptions
ZipExceptionif the resource could not be created

◆ hashcode()

size_t hashcode ( ) const
overridevirtualnoexcept

Get the URI's hash code.

Returns
the hash code

Implements Uri.

◆ isEntryDirectory()

bool isEntryDirectory ( ) const

Return true if the entry is an archive directory.

Returns
true if the entry is an archive directory

◆ isEntryFile()

bool isEntryFile ( ) const

Return true if the entry is an archive file.

Returns
true if the entry is an archive file

◆ isIterable()

bool isIterable ( ) const
inlineoverridevirtual

Does the URI have a non-recursive iterator (examples: file and zip archive URIs).

Implements Uri.

◆ isRecursivelyIterable()

bool isRecursivelyIterable ( ) const
inlineoverridevirtual

Does the URI have a recursive iterator (examples: file and zip archive URIs).

Implements Uri.

◆ isRegularDirectory()

bool isRegularDirectory ( ) const
inlineoverridevirtual

Returns true if the URI points to a file directory.

Returns
true if the URI points to a file directory

Implements Uri.

◆ isRegularFile()

bool isRegularFile ( ) const
inlineoverridevirtual

Returns true if the URI is a regular file.

Returns
true if the URI is a regular file

Implements Uri.

◆ iterator()

std::unique_ptr<UriIterator> iterator ( ) const
inlineoverridevirtual

Get a (non-recursive) iterator.

This will throw a NotImplementedException if the URI does not have an iterator.

Implements Uri.

◆ name()

std::string name ( ) const
inline

Get the name of the entry.

Returns
the name of the entry that corresponds to the supplied index

◆ operator==()

bool operator== ( const Uri rhs) const
overridevirtual

Compare the supplied URI to the current URI.

Returns
true if the supplied URI is equal to the current URI.

Implements Uri.

◆ readEntryAsBytes()

std::vector<char> readEntryAsBytes ( ) const
inline

Get the contents of the entry as a char vector.

Parameters
namethe name of the entry
Returns
the contents of the specified entry as a char vector

◆ readEntryAsString()

std::string readEntryAsString ( ) const
inline

Get the contents of the entry as a UTF-8 string.

Returns
the contents of the entry as a UTF-8 string

◆ readEntryComment()

std::string readEntryComment ( ) const
inline

Get the comment on the entry if one exists.

Returns
the comment on the entry if one exists or an empty string
Exceptions
ZipExceptionif the entry comment could not be obtained

◆ recursiveIterator()

std::unique_ptr<RecursiveUriIterator> recursiveIterator ( ) const
inlineoverridevirtual

Get a recursive iterator.

This will throw a NotImplementedException if the URI does not have a recursive iterator.

Implements Uri.

◆ resolve()

std::unique_ptr<Uri> resolve ( std::string_view  path) const
inlineoverridevirtual

Resolve the relative or absolute path, in reference to the current URI.

If the supplied path contains a scheme prefix, the URI fromString function will be called to create a new unrelated URI instance.

This method will determine the base path to use by applying the following rules.

  • If the URI path ends with a forward slash (or is a directory for file URIs), the base path is the URI path.
  • Otherwise, the rightmost path element is stripped from the URI path to form the base path.
Parameters
patha relative or absolute path, or a full URI
Returns
a new URI

Implements Uri.

◆ size()

size_t size ( ) const

Get the uncompressed size of the entry in bytes.

Returns
the uncompressed size of the entry in bytes

◆ toRawString()

std::string toRawString ( ) const
inlineoverridevirtual

Get a string representing the raw URI.

This may or may not be the same as the string returned by toUriString().

Returns
a string representing the raw URI

Implements Uri.

◆ toUriString()

std::string toUriString ( ) const
overridevirtual

Get a string representing the URI, complete with scheme.

Returns
a string representing the URI, complete with scheme

Implements Uri.

◆ utf32To8WriteResource()

std::unique_ptr<Utf32To8WriteResource> utf32To8WriteResource ( )
inlineoverridevirtual

Get a UTF-32 to UTF-8 write resource for the URI.

Exceptions
NotImplementedExceptionif the URI does not support writing
ResourceExceptionif the resource could not be created

Implements Uri.

◆ utf8To32ReadResource()

std::unique_ptr<Utf8To32ReadResource> utf8To32ReadResource ( ) const
inlineoverridevirtual

Get a UTF-8 to UTF-32 read resource for the URI.

Exceptions
NotImplementedExceptionif the URI does not support reading
ResourceExceptionif the resource could not be created

Implements Uri.


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