Class DirectoryNode

java.lang.Object
org.apache.poi.poifs.filesystem.EntryNode
org.apache.poi.poifs.filesystem.DirectoryNode
All Implemented Interfaces:
Iterable<Entry>, POIFSViewable, DirectoryEntry, Entry

public class DirectoryNode extends EntryNode implements DirectoryEntry, POIFSViewable, Iterable<Entry>
Simple implementation of DirectoryEntry
  • Method Details

    • getPath

      public POIFSDocumentPath getPath()
      Returns:
      this directory's path representation
    • getFileSystem

      public POIFSFileSystem getFileSystem()
      Returns:
      the filesystem that this belongs to
    • createDocumentInputStream

      public DocumentInputStream createDocumentInputStream(String documentName) throws IOException
      open a document in the directory's entry's list of entries
      Parameters:
      documentName - the name of the document to be opened
      Returns:
      a newly opened DocumentInputStream
      Throws:
      IOException - if the document does not exist or the name is that of a DirectoryEntry
    • createDocumentInputStream

      public DocumentInputStream createDocumentInputStream(Entry document) throws IOException
      open a document in the directory's entry's list of entries
      Parameters:
      document - the document to be opened
      Returns:
      a newly opened DocumentInputStream or DocumentInputStream
      Throws:
      IOException - if the document does not exist or the name is that of a DirectoryEntry
    • getEntries

      public Iterator<Entry> getEntries()
      get an iterator of the Entry instances contained directly in this instance (in other words, children only; no grandchildren etc.)
      Specified by:
      getEntries in interface DirectoryEntry
      Returns:
      iterator; never null, but hasNext() may return false immediately (i.e., this DirectoryEntry is empty). All objects retrieved by next() are guaranteed to be implementations of Entry.
    • getEntryNames

      public Set<String> getEntryNames()
      get the names of all the Entries contained directly in this instance (in other words, names of children only; no grandchildren etc).
      Specified by:
      getEntryNames in interface DirectoryEntry
      Returns:
      the names of all the entries that may be retrieved with getEntry(String), which may be empty (if this DirectoryEntry is empty)
    • isEmpty

      public boolean isEmpty()
      is this DirectoryEntry empty?
      Specified by:
      isEmpty in interface DirectoryEntry
      Returns:
      true if this instance contains no Entry instances
    • getEntryCount

      public int getEntryCount()
      find out how many Entry instances are contained directly within this DirectoryEntry
      Specified by:
      getEntryCount in interface DirectoryEntry
      Returns:
      number of immediately (no grandchildren etc.) contained Entry instances
    • hasEntry

      public boolean hasEntry(String name)
      Description copied from interface: DirectoryEntry
      Checks if entry with specified name present
      Specified by:
      hasEntry in interface DirectoryEntry
    • getEntry

      public Entry getEntry(String name) throws FileNotFoundException
      get a specified Entry by name
      Specified by:
      getEntry in interface DirectoryEntry
      Parameters:
      name - the name of the Entry to obtain.
      Returns:
      the specified Entry, if it is directly contained in this DirectoryEntry
      Throws:
      FileNotFoundException - if no Entry with the specified name exists in this DirectoryEntry
    • createDocument

      public DocumentEntry createDocument(String name, InputStream stream) throws IOException
      create a new DocumentEntry
      Specified by:
      createDocument in interface DirectoryEntry
      Parameters:
      name - the name of the new DocumentEntry
      stream - the InputStream from which to create the new DocumentEntry
      Returns:
      the new DocumentEntry
      Throws:
      IOException - if the document can't be created
    • createDocument

      public DocumentEntry createDocument(String name, int size, POIFSWriterListener writer) throws IOException
      create a new DocumentEntry; the data will be provided later
      Specified by:
      createDocument in interface DirectoryEntry
      Parameters:
      name - the name of the new DocumentEntry
      size - the size of the new DocumentEntry
      writer - the writer of the new DocumentEntry
      Returns:
      the new DocumentEntry
      Throws:
      IOException - if the document can't be created
    • createDirectory

      public DirectoryEntry createDirectory(String name) throws IOException
      create a new DirectoryEntry
      Specified by:
      createDirectory in interface DirectoryEntry
      Parameters:
      name - the name of the new DirectoryEntry
      Returns:
      the new DirectoryEntry
      Throws:
      IOException - if the directory can't be created
    • createOrUpdateDocument

      public DocumentEntry createOrUpdateDocument(String name, InputStream stream) throws IOException
      Set the contents of a document, creating if needed, otherwise updating. Returns the created / updated DocumentEntry
      Parameters:
      name - the name of the new or existing DocumentEntry
      stream - the InputStream from which to populate the DocumentEntry
      Returns:
      the new or updated DocumentEntry
      Throws:
      IOException - if the document can't be created or its content be replaced
    • getStorageClsid

      public ClassID getStorageClsid()
      Gets the storage clsid of the directory entry
      Specified by:
      getStorageClsid in interface DirectoryEntry
      Returns:
      storage Class ID
    • setStorageClsid

      public void setStorageClsid(ClassID clsidStorage)
      Sets the storage clsid for the directory entry
      Specified by:
      setStorageClsid in interface DirectoryEntry
      Parameters:
      clsidStorage - storage Class ID
    • isDirectoryEntry

      public boolean isDirectoryEntry()
      is this a DirectoryEntry?
      Specified by:
      isDirectoryEntry in interface Entry
      Overrides:
      isDirectoryEntry in class EntryNode
      Returns:
      true if the Entry is a DirectoryEntry, else false
    • getViewableArray

      public Object[] getViewableArray()
      Get an array of objects, some of which may implement POIFSViewable
      Specified by:
      getViewableArray in interface POIFSViewable
      Returns:
      an array of Object; may not be null, but may be empty
    • getViewableIterator

      public Iterator<Object> getViewableIterator()
      Get an Iterator of objects, some of which may implement POIFSViewable
      Specified by:
      getViewableIterator in interface POIFSViewable
      Returns:
      an Iterator; may not be null, but may have an empty back end store
    • preferArray

      public boolean preferArray()
      Give viewers a hint as to whether to call getViewableArray or getViewableIterator
      Specified by:
      preferArray in interface POIFSViewable
      Returns:
      true if a viewer should call getViewableArray, false if a viewer should call getViewableIterator
    • getShortDescription

      public String getShortDescription()
      Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
      Specified by:
      getShortDescription in interface POIFSViewable
      Returns:
      short description
    • iterator

      public Iterator<Entry> iterator()
      Returns an Iterator over all the entries
      Specified by:
      iterator in interface Iterable<Entry>
    • spliterator

      public Spliterator<Entry> spliterator()
      Returns a Spliterator over all the entries
      Specified by:
      spliterator in interface Iterable<Entry>
      Since:
      POI 5.2.0