Module jcifs

Interface SmbResource

All Superinterfaces:
AutoCloseable
All Known Subinterfaces:
SmbPipeResource
All Known Implementing Classes:
SmbFile, SmbNamedPipe

public interface SmbResource extends AutoCloseable
This class represents a resource on an SMB network. Mainly these resources are files and directories however an SmbFile may also refer to servers and workgroups.
Author:
mbechler
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Tests to see if the file this SmbResource represents can be read.
    boolean
    Tests to see if the file this SmbResource represents exists and is not marked read-only.
    Fetch all children
    children(String wildcard)
    Fetch children matching pattern, server-side filtering
    Fetch children matching the given filter.
    Fetch children matching the given filter.
    void
    Close/release the file This releases all resources that this file holds.
    void
    This method will copy the file or directory represented by this SmbResource and it's sub-contents to the location specified by the dest parameter.
    void
    Create a new file but fail if it already exists.
    long
    Retrieve the time this SmbResource was created.
    void
    This method will delete the file or directory specified by this SmbResource.
    boolean
    Tests to see if the SMB resource exists.
    long
    Get the file index
    int
    Return the attributes of this file.
    The context this file was opened with
    long
    This method returns the free disk space in bytes of the drive this share represents or the drive on which the directory or file resides.
    Gets the file locator for this file The file locator provides details about
    Returns the last component of the target URL.
    Return the resolved owner group SID for this file or directory
    getOwnerGroup(boolean resolve)
    Return the owner group SID for this file or directory
    Return the resolved owner user SID for this file or directory
    getOwnerUser(boolean resolve)
    Return the owner user SID for this file or directory
    ACE[]
    Return an array of Access Control Entry (ACE) objects representing the security descriptor associated with this file or directory.
    ACE[]
    getSecurity(boolean resolveSids)
    Return an array of Access Control Entry (ACE) objects representing the security descriptor associated with this file or directory.
    ACE[]
    getShareSecurity(boolean resolveSids)
    Return an array of Access Control Entry (ACE) objects representing the share permissions on the share exporting this file or directory.
    int
    Returns type of of object this SmbResource represents.
    boolean
    Tests to see if the file this SmbResource represents is a directory.
    boolean
    Tests to see if the file this SmbResource represents is not a directory.
    boolean
    Tests to see if the file this SmbResource represents is marked as hidden.
    long
    Retrieve the last acces time of the file represented by this SmbResource
    long
    Retrieve the last time the file represented by this SmbResource was modified.
    long
    Returns the length of this SmbResource in bytes.
    void
    Creates a directory with the path specified by this SmbResource.
    void
    Creates a directory with the path specified by this SmbResource and any parent directories that do not exist.
    Opens an input stream reading the file (read only, sharable)
    openInputStream(int sharing)
    Opens an input stream reading the file (read only)
    openInputStream(int flags, int access, int sharing)
    Opens an input stream reading the file (read only)
    Opens an output stream writing to the file (truncating, write only, sharable)
    openOutputStream(boolean append)
    Opens an output stream writing to the file (write only, read sharable)
    openOutputStream(boolean append, int sharing)
    Opens an output stream writing to the file (write only, exclusive write access)
    openOutputStream(boolean append, int openFlags, int access, int sharing)
    Opens an output stream writing to the file (write only, exclusive write access)
    Opens the file for random access
    openRandomAccess(String mode, int sharing)
    Opens the file for random access
    void
    Changes the name of the file this SmbResource represents to the name designated by the SmbResource argument.
    void
    renameTo(SmbResource dest, boolean replace)
    Changes the name of the file this SmbResource represents to the name designated by the SmbResource argument.
    Fetch a child resource
    void
    setAttributes(int attrs)
    Set the attributes of this file.
    void
    setCreateTime(long time)
    Set the create time of the file.
    void
    setFileTimes(long createTime, long lastModified, long lastAccess)
    Set the create, last modified and last access time of the file.
    void
    setLastAccess(long time)
    Set the last access time of the file.
    void
    setLastModified(long time)
    Set the last modified time of the file.
    void
    Make this file read-only.
    void
    Turn off the read-only attribute of this file.
    watch(int filter, boolean recursive)
    Creates a directory watch The server will notify the client when there are changes to the directories contents
  • Method Details

    • getLocator

      SmbResourceLocator getLocator()
      Gets the file locator for this file The file locator provides details about
      Returns:
      the fileLocator
    • getContext

      CIFSContext getContext()
      The context this file was opened with
      Returns:
      the context associated with this file
    • getName

      String getName()
      Returns the last component of the target URL. This will effectively be the name of the file or directory represented by this SmbResource or in the case of URLs that only specify a server or workgroup, the server or workgroup will be returned. The name of the root URL smb:// is also smb://. If this SmbResource refers to a workgroup, server, share, or directory, the name will include a trailing slash '/' so that composing new SmbResources will maintain the trailing slash requirement.
      Returns:
      The last component of the URL associated with this SMB resource or smb:// if the resource is smb:// itself.
    • getType

      int getType() throws CIFSException
      Returns type of of object this SmbResource represents.
      Returns:
      TYPE_FILESYSTEM, TYPE_WORKGROUP, TYPE_SERVER, TYPE_SHARE, TYPE_PRINTER, TYPE_NAMED_PIPE, or TYPE_COMM.
      Throws:
      CIFSException - if an error occurs accessing the resource
    • exists

      boolean exists() throws CIFSException
      Tests to see if the SMB resource exists. If the resource refers only to a server, this method determines if the server exists on the network and is advertising SMB services. If this resource refers to a workgroup, this method determines if the workgroup name is valid on the local SMB network. If this SmbResource refers to the root smb:// resource true is always returned. If this SmbResource is a traditional file or directory, it will be queried for on the specified server as expected.
      Returns:
      true if the resource exists or is alive or false otherwise
      Throws:
      CIFSException - if an error occurs accessing the resource
    • resolve

      SmbResource resolve(String name) throws CIFSException
      Fetch a child resource
      Parameters:
      name - the name of the child resource to resolve
      Returns:
      the child resource
      Throws:
      CIFSException - if an error occurs accessing the resource
    • fileIndex

      long fileIndex() throws CIFSException
      Get the file index
      Returns:
      server side file index, 0 if unavailable
      Throws:
      CIFSException - if an error occurs accessing the resource
    • getAttributes

      int getAttributes() throws CIFSException
      Return the attributes of this file. Attributes are represented as a bitset that must be masked with ATTR_* constants to determine if they are set or unset. The value returned is suitable for use with the setAttributes() method.
      Returns:
      the ATTR_* attributes associated with this file
      Throws:
      CIFSException - if an error occurs accessing the resource
    • isHidden

      boolean isHidden() throws CIFSException
      Tests to see if the file this SmbResource represents is marked as hidden. This method will also return true for shares with names that end with '$' such as IPC$ or C$.
      Returns:
      true if the SmbResource is marked as being hidden
      Throws:
      CIFSException - if an error occurs accessing the resource
    • isFile

      boolean isFile() throws CIFSException
      Tests to see if the file this SmbResource represents is not a directory.
      Returns:
      true if this SmbResource is not a directory
      Throws:
      CIFSException - if an error occurs accessing the resource
    • isDirectory

      boolean isDirectory() throws CIFSException
      Tests to see if the file this SmbResource represents is a directory.
      Returns:
      true if this SmbResource is a directory
      Throws:
      CIFSException - if an error occurs accessing the resource
    • canWrite

      boolean canWrite() throws CIFSException
      Tests to see if the file this SmbResource represents exists and is not marked read-only. By default, resources are considered to be read-only and therefore for smb://, smb://workgroup/, and smb://server/ resources will be read-only.
      Returns:
      true if the resource exists is not marked read-only
      Throws:
      CIFSException - if an error occurs accessing the resource
    • canRead

      boolean canRead() throws CIFSException
      Tests to see if the file this SmbResource represents can be read. Because any file, directory, or other resource can be read if it exists, this method simply calls the exists method.
      Returns:
      true if the file is read-only
      Throws:
      CIFSException - if an error occurs accessing the resource
    • setReadWrite

      void setReadWrite() throws CIFSException
      Turn off the read-only attribute of this file. This is shorthand for setAttributes( getAttributes() & ~ATTR_READONLY ).
      Throws:
      CIFSException - if an error occurs modifying the resource
    • setReadOnly

      void setReadOnly() throws CIFSException
      Make this file read-only. This is shorthand for setAttributes( getAttributes() | ATTR_READ_ONLY ).
      Throws:
      CIFSException - if an error occurs modifying the resource
    • setAttributes

      void setAttributes(int attrs) throws CIFSException
      Set the attributes of this file. Attributes are composed into a bitset by bitwise ORing the ATTR_* constants. Setting the value returned by getAttributes will result in both files having the same attributes.
      Parameters:
      attrs - attribute flags
      Throws:
      CIFSException - if an error occurs modifying the resource
    • setFileTimes

      void setFileTimes(long createTime, long lastModified, long lastAccess) throws CIFSException
      Set the create, last modified and last access time of the file. The time is specified as milliseconds from Jan 1, 1970 which is the same as that which is returned by the createTime(), lastModified(), lastAccess() methods.
      This method does not apply to workgroups, servers, or shares.
      Parameters:
      createTime - the create time as milliseconds since Jan 1, 1970
      lastModified - the last modified time as milliseconds since Jan 1, 1970
      lastAccess - the last access time as milliseconds since Jan 1, 1970
      Throws:
      CIFSException - if an error occurs modifying the resource
      SmbUnsupportedOperationException - if CAP_NT_SMBS is unavailable
      See Also:
    • setLastAccess

      void setLastAccess(long time) throws CIFSException
      Set the last access time of the file. The time is specified as milliseconds from Jan 1, 1970 which is the same as that which is returned by the lastAccess() method.
      This method does not apply to workgroups, servers, or shares.
      Parameters:
      time - the last access time as milliseconds since Jan 1, 1970
      Throws:
      CIFSException - if an error occurs modifying the resource
      SmbUnsupportedOperationException - if CAP_NT_SMBS is unavailable
    • setLastModified

      void setLastModified(long time) throws CIFSException
      Set the last modified time of the file. The time is specified as milliseconds from Jan 1, 1970 which is the same as that which is returned by the lastModified() method.
      This method does not apply to workgroups, servers, or shares.
      Parameters:
      time - the last modified time as milliseconds since Jan 1, 1970
      Throws:
      CIFSException - if an error occurs modifying the resource
    • setCreateTime

      void setCreateTime(long time) throws CIFSException
      Set the create time of the file. The time is specified as milliseconds from Jan 1, 1970 which is the same as that which is returned by the createTime() method.
      This method does not apply to workgroups, servers, or shares.
      Parameters:
      time - the create time as milliseconds since Jan 1, 1970
      Throws:
      CIFSException - if an error occurs modifying the resource
      SmbUnsupportedOperationException - if CAP_NT_SMBS is unavailable
    • lastAccess

      long lastAccess() throws CIFSException
      Retrieve the last acces time of the file represented by this SmbResource
      Returns:
      The number of milliseconds since the 00:00:00 GMT, January 1, 1970 as a long value
      Throws:
      CIFSException - if an error occurs accessing the resource
    • lastModified

      long lastModified() throws CIFSException
      Retrieve the last time the file represented by this SmbResource was modified. The value returned is suitable for constructing a Date object (i.e. seconds since Epoch 1970). Times should be the same as those reported using the properties dialog of the Windows Explorer program.
      Returns:
      The number of milliseconds since the 00:00:00 GMT, January 1, 1970 as a long value
      Throws:
      CIFSException - if an error occurs accessing the resource
    • createTime

      long createTime() throws CIFSException
      Retrieve the time this SmbResource was created. The value returned is suitable for constructing a Date object (i.e. seconds since Epoch 1970). Times should be the same as those reported using the properties dialog of the Windows Explorer program. For Win95/98/Me this is actually the last write time. It is currently not possible to retrieve the create time from files on these systems.
      Returns:
      The number of milliseconds since the 00:00:00 GMT, January 1, 1970 as a long value
      Throws:
      CIFSException - if an error occurs accessing the resource
    • createNewFile

      void createNewFile() throws CIFSException
      Create a new file but fail if it already exists. The check for existence of the file and it's creation are an atomic operation with respect to other filesystem activities.
      Throws:
      CIFSException - if an error occurs creating the file
    • mkdirs

      void mkdirs() throws CIFSException
      Creates a directory with the path specified by this SmbResource and any parent directories that do not exist. This method will fail when used with smb://, smb://workgroup/, smb://server/, or smb://server/share/ URLs because workgroups, servers, and shares cannot be dynamically created (although in the future it may be possible to create shares).
      Throws:
      CIFSException - if an error occurs creating the directories
    • mkdir

      void mkdir() throws CIFSException
      Creates a directory with the path specified by this SmbResource. For this method to be successful, the target must not already exist. This method will fail when used with smb://, smb://workgroup/, smb://server/, or smb://server/share/ URLs because workgroups, servers, and shares cannot be dynamically created (although in the future it may be possible to create shares).
      Throws:
      CIFSException - if an error occurs creating the directory
    • getDiskFreeSpace

      long getDiskFreeSpace() throws CIFSException
      This method returns the free disk space in bytes of the drive this share represents or the drive on which the directory or file resides. Objects other than TYPE_SHARE or TYPE_FILESYSTEM will result in 0L being returned.
      Returns:
      the free disk space in bytes of the drive on which this file or directory resides
      Throws:
      CIFSException - if an error occurs accessing the resource
    • length

      long length() throws CIFSException
      Returns the length of this SmbResource in bytes. If this object is a TYPE_SHARE the total capacity of the disk shared in bytes is returned. If this object is a directory or a type other than TYPE_SHARE, 0L is returned.
      Returns:
      The length of the file in bytes or 0 if this SmbResource is not a file.
      Throws:
      CIFSException - if an error occurs accessing the resource
    • delete

      void delete() throws CIFSException
      This method will delete the file or directory specified by this SmbResource. If the target is a directory, the contents of the directory will be deleted as well. If a file within the directory or it's sub-directories is marked read-only, the read-only status will be removed and the file will be deleted. If the file has been opened before, it will be closed.
      Throws:
      CIFSException - if an error occurs accessing the resource
    • copyTo

      void copyTo(SmbResource dest) throws CIFSException
      This method will copy the file or directory represented by this SmbResource and it's sub-contents to the location specified by the dest parameter. This file and the destination file do not need to be on the same host. This operation does not copy extended file attributes such as ACLs but it does copy regular attributes as well as create and last write times. This method is almost twice as efficient as manually copying as it employs an additional write thread to read and write data concurrently.
      It is not possible (nor meaningful) to copy entire workgroups or servers.
      Parameters:
      dest - the destination file or directory
      Throws:
      CIFSException - if an error occurs accessing the resource
    • renameTo

      void renameTo(SmbResource dest) throws CIFSException
      Changes the name of the file this SmbResource represents to the name designated by the SmbResource argument.
      Remember: SmbResources are immutable and therefore the path associated with this SmbResource object will not change). To access the renamed file it is necessary to construct a new SmbResource.
      Parameters:
      dest - An SmbResource that represents the new pathname
      Throws:
      CIFSException - if an error occurs renaming the resource
      NullPointerException - If the dest argument is null
    • renameTo

      void renameTo(SmbResource dest, boolean replace) throws CIFSException
      Changes the name of the file this SmbResource represents to the name designated by the SmbResource argument.
      Remember: SmbResources are immutable and therefore the path associated with this SmbResource object will not change). To access the renamed file it is necessary to construct a new SmbResource.
      Parameters:
      dest - An SmbResource that represents the new pathname
      replace - Whether an existing destination file should be replaced (only supported with SMB2)
      Throws:
      CIFSException - if an error occurs renaming the resource
      NullPointerException - If the dest argument is null
    • watch

      SmbWatchHandle watch(int filter, boolean recursive) throws CIFSException
      Creates a directory watch The server will notify the client when there are changes to the directories contents
      Parameters:
      filter - see constants in FileNotifyInformation
      recursive - whether to also watch subdirectories
      Returns:
      watch context, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • getOwnerGroup

      SID getOwnerGroup() throws IOException
      Return the resolved owner group SID for this file or directory
      Returns:
      the owner group SID, null if not present
      Throws:
      IOException - if an I/O error occurs
    • getOwnerGroup

      SID getOwnerGroup(boolean resolve) throws IOException
      Return the owner group SID for this file or directory
      Parameters:
      resolve - whether to resolve the group name
      Returns:
      the owner group SID, null if not present
      Throws:
      IOException - if an I/O error occurs
    • getOwnerUser

      SID getOwnerUser() throws IOException
      Return the resolved owner user SID for this file or directory
      Returns:
      the owner user SID, null if not present
      Throws:
      IOException - if an I/O error occurs
    • getOwnerUser

      SID getOwnerUser(boolean resolve) throws IOException
      Return the owner user SID for this file or directory
      Parameters:
      resolve - whether to resolve the user name
      Returns:
      the owner user SID, null if not present
      Throws:
      IOException - if an I/O error occurs
    • getSecurity

      ACE[] getSecurity() throws IOException
      Return an array of Access Control Entry (ACE) objects representing the security descriptor associated with this file or directory.

      Initially, the SIDs within each ACE will not be resolved however when getType(), getDomainName(), getAccountName(), or toString() is called, the names will attempt to be resolved. If the names cannot be resolved (e.g. due to temporary network failure), the said methods will return default values (usually S-X-Y-Z strings of fragments of).

      Alternatively getSecurity(true) may be used to resolve all SIDs together and detect network failures.

      Returns:
      array of ACEs
      Throws:
      IOException - if an I/O error occurs
    • getSecurity

      ACE[] getSecurity(boolean resolveSids) throws IOException
      Return an array of Access Control Entry (ACE) objects representing the security descriptor associated with this file or directory. If no DACL is present, null is returned. If the DACL is empty, an array with 0 elements is returned.
      Parameters:
      resolveSids - Attempt to resolve the SIDs within each ACE form their numeric representation to their corresponding account names.
      Returns:
      array of ACEs
      Throws:
      IOException - if an I/O error occurs
    • getShareSecurity

      ACE[] getShareSecurity(boolean resolveSids) throws IOException
      Return an array of Access Control Entry (ACE) objects representing the share permissions on the share exporting this file or directory. If no DACL is present, null is returned. If the DACL is empty, an array with 0 elements is returned.

      Note that this is different from calling getSecurity on a share. There are actually two different ACLs for shares - the ACL on the share and the ACL on the folder being shared. Go to Computer Management > System Tools > Shared Folders > Shares and look at the Properties for a share. You will see two tabs - one for "Share Permissions" and another for "Security". These correspond to the ACLs returned by getShareSecurity and getSecurity respectively.

      Parameters:
      resolveSids - Attempt to resolve the SIDs within each ACE form their numeric representation to their corresponding account names.
      Returns:
      array of ACEs
      Throws:
      IOException - if an I/O error occurs
    • openRandomAccess

      SmbRandomAccess openRandomAccess(String mode, int sharing) throws CIFSException
      Opens the file for random access
      Parameters:
      mode - access mode (r|rw)
      sharing - flags indicating for which operations others may concurrently open the file
      Returns:
      random access file, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openRandomAccess

      SmbRandomAccess openRandomAccess(String mode) throws CIFSException
      Opens the file for random access
      Parameters:
      mode - access mode (r|rw)
      Returns:
      random access file, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openOutputStream

      OutputStream openOutputStream(boolean append, int openFlags, int access, int sharing) throws CIFSException
      Opens an output stream writing to the file (write only, exclusive write access)
      Parameters:
      append - whether to append to or truncate the input
      openFlags - flags for open operation
      access - desired file access flags
      sharing - flags indicating for which operations others may open the file
      Returns:
      output stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openOutputStream

      OutputStream openOutputStream(boolean append, int sharing) throws CIFSException
      Opens an output stream writing to the file (write only, exclusive write access)
      Parameters:
      append - whether to append to or truncate the input
      sharing - flags indicating for which operations others may open the file (FILE_SHARING_*)
      Returns:
      output stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openOutputStream

      OutputStream openOutputStream(boolean append) throws CIFSException
      Opens an output stream writing to the file (write only, read sharable)
      Parameters:
      append - whether to append to or truncate the input
      Returns:
      output stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openOutputStream

      OutputStream openOutputStream() throws CIFSException
      Opens an output stream writing to the file (truncating, write only, sharable)
      Returns:
      output stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openInputStream

      InputStream openInputStream(int flags, int access, int sharing) throws CIFSException
      Opens an input stream reading the file (read only)
      Parameters:
      flags - open flags
      access - desired access flags
      sharing - flags indicating for which operations others may open the file (FILE_SHARING_*)
      Returns:
      input stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openInputStream

      InputStream openInputStream(int sharing) throws CIFSException
      Opens an input stream reading the file (read only)
      Parameters:
      sharing - flags indicating for which operations others may open the file (FILE_SHARING_*)
      Returns:
      input stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • openInputStream

      InputStream openInputStream() throws CIFSException
      Opens an input stream reading the file (read only, sharable)
      Returns:
      input stream, needs to be closed when finished
      Throws:
      CIFSException - if an error occurs accessing the resource
    • close

      void close()
      Close/release the file This releases all resources that this file holds. If not using strict mode this is currently a no-op.
      Specified by:
      close in interface AutoCloseable
      See Also:
    • children

      Fetch all children
      Returns:
      an iterator over the child resources
      Throws:
      CIFSException - if an error occurs accessing the resource
    • children

      CloseableIterator<SmbResource> children(String wildcard) throws CIFSException
      Fetch children matching pattern, server-side filtering

      The wildcard expression may consist of two special meta characters in addition to the normal filename characters. The '*' character matches any number of characters in part of a name. If the expression begins with one or more '?'s then exactly that many characters will be matched whereas if it ends with '?'s it will match that many characters or less.

      Wildcard expressions will not filter workgroup names or server names.

      Parameters:
      wildcard - the wildcard pattern to match
      Returns:
      an iterator over the child resources
      Throws:
      CIFSException - if an error occurs accessing the resource
    • children

      Fetch children matching the given filter.
      Parameters:
      filter - filter acting on file names
      Returns:
      an iterator over the child resources
      Throws:
      CIFSException - if an error occurs accessing the resource
      See Also:
    • children

      Fetch children matching the given filter.
      Parameters:
      filter - filter acting on SmbResource instances
      Returns:
      an iterator over the child resources
      Throws:
      CIFSException - if an error occurs accessing the resource
      See Also: