- All Implemented Interfaces:
AutoCloseable,SmbConstants,SmbResource
- Direct Known Subclasses:
SmbNamedPipe
SmbFile
may also refer to servers and workgroups. If the resource is a file or
directory the methods of SmbFile follow the behavior of
the well known File class. One fundamental difference
is the usage of a URL scheme [1] to specify the target file or
directory. SmbFile URLs have the following syntax:
smb://[[[domain;]username[:password]@]server[:port]/[[share/[dir/]file]]][?param=value[param2=value2[...]]]
This example:
smb://storage15/public/foo.txt
would reference the file foo.txt in the share
public on the server storage15. In addition
to referencing files and directories, jCIFS can also address servers,
and workgroups.
Important: all SMB URLs that represent workgroups, servers, shares, or directories require a trailing slash '/'.
When using the java.net.URL class with
'smb://' URLs it is necessary to first call the static
org.codelibs.jcifs.smb.Config.registerSmbURLHandler(); method. This is required
to register the SMB protocol handler.
The userinfo component of the SMB URL (domain;user:pass) must
be URL encoded if it contains reserved characters. According to RFC 2396
these characters are non US-ASCII characters and most meta characters
however jCIFS will work correctly with anything but '@' which is used
to delimit the userinfo component from the server and '%' which is the
URL escape character itself.
The server component may a traditional NetBIOS name, a DNS name, or IP address. These name resolution mechanisms and their resolution order can be changed (See Setting Name Resolution Properties). The servername and path components are not case sensitive but the domain, username, and password components are. It is also likely that properties must be specified for org.codelibs.jcifs.smb to function (See Setting JCIFS Properties). Here are some examples of SMB URLs with brief descriptions of what they do:
[1] This URL scheme is based largely on the SMB Filesharing URL Scheme IETF draft.
| SMB URL Examples | |
| URL | Description |
smb://users-nyc;miallen:mypass@angus/tmp/ |
This URL references a share called tmp on the server
angus as user miallen who's password is
mypass.
|
smb://Administrator:P%40ss@msmith1/c/WINDOWS/Desktop/foo.txt |
A relatively sophisticated example that references a file
msmith1's desktop as user Administrator. Notice the '@' is URL encoded with the '%40'
hexcode escape.
|
smb://angus/ |
This references only a server. The behavior of some methods is different
in this context(e.g. you cannot delete a server) however
as you might expect the list method will list the available
shares on this server.
|
smb://angus.foo.net/d/org.codelibs.jcifs.smb/pipes.doc |
The server name may also be a DNS name as it is in this example. See Setting Name Resolution Properties for details. |
smb://192.168.1.15/ADMIN$/ |
The server name may also be an IP address. See Setting Name Resolution Properties for details. |
smb://domain;username:password@server/share/path/to/file.txt |
A prototypical example that uses all the fields. |
smb://server/share/path/to/dir <-- ILLEGAL |
URLs that represent servers, shares, or directories require a trailing slash '/'. |
A second constructor argument may be specified to augment the URL
for better programmatic control when processing many files under
a common base. This is slightly different from the corresponding
java.io.File usage; a '/' at the beginning of the second
parameter will still use the server component of the first parameter. The
examples below illustrate the resulting URLs when this second constructor
argument is used.
| Examples Of SMB URLs When Augmented With A Second Constructor Parameter | ||
| First Parameter | Second Parameter | Result |
smb://host/share/a/b/
|
c/d/
|
smb://host/share/a/b/c/d/
|
smb://host/share/foo/bar/
|
/share2/zig/zag
|
smb://host/share2/zig/zag
|
smb://host/share/foo/bar/
|
../zip/
|
smb://host/share/foo/zip/
|
smb://host/share/zig/zag
|
smb://foo/bar/
|
smb://foo/bar/
|
smb://host/share/foo/
|
../.././.././../foo/
|
smb://host/foo/
|
smb://host/share/zig/zag
|
/
|
smb://host/
|
smb://server/
|
../
|
smb://server/
|
Instances of the SmbFile class are immutable; that is,
once created, the abstract pathname represented by an SmbFile object
will never change.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final intMask for attributes that can be retrieved from the serverprotected static final intMask for attributes that can be set on the serverprotected static final intDefault expiration period for cached attributes in millisecondsprotected final org.codelibs.jcifs.smb.impl.SmbResourceLocatorImplThe resource locator containing the parsed SMB URL componentsprotected static final intHash code for the "." directory entryprotected static final intHash code for the ".." directory entryFields inherited from class java.net.URLConnection
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCachesFields inherited from interface org.codelibs.jcifs.smb.SmbConstants
ATTR_ARCHIVE, ATTR_COMPRESSED, ATTR_DIRECTORY, ATTR_HIDDEN, ATTR_NORMAL, ATTR_READONLY, ATTR_SYSTEM, ATTR_TEMPORARY, ATTR_VOLUME, CAP_DFS, CAP_EXTENDED_SECURITY, CAP_LARGE_FILES, CAP_LARGE_READX, CAP_LARGE_WRITEX, CAP_LEVEL_II_OPLOCKS, CAP_LOCK_AND_READ, CAP_MPX_MODE, CAP_NONE, CAP_NT_FIND, CAP_NT_SMBS, CAP_RAW_MODE, CAP_RPC_REMOTE_APIS, CAP_STATUS32, CAP_UNICODE, CMD_OFFSET, DEFAULT_CONN_TIMEOUT, DEFAULT_MAX_MPX_COUNT, DEFAULT_NOTIFY_BUF_SIZE, DEFAULT_OEM_ENCODING, DEFAULT_PORT, DEFAULT_RCV_BUF_SIZE, DEFAULT_RESPONSE_TIMEOUT, DEFAULT_SHARING, DEFAULT_SND_BUF_SIZE, DEFAULT_SO_TIMEOUT, DEFAULT_SSN_LIMIT, DELETE, ERROR_CODE_OFFSET, FILE_APPEND_DATA, FILE_DELETE, FILE_EXECUTE, FILE_NO_SHARE, FILE_READ_ATTRIBUTES, FILE_READ_DATA, FILE_READ_EA, FILE_SHARE_DELETE, FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_WRITE_ATTRIBUTES, FILE_WRITE_DATA, FILE_WRITE_EA, FLAGS_COPY_SOURCE_MODE_ASCII, FLAGS_COPY_TARGET_MODE_ASCII, FLAGS_LOCK_AND_READ_WRITE_AND_UNLOCK, FLAGS_NONE, FLAGS_NOTIFY_OF_MODIFY_ACTION, FLAGS_OFFSET, FLAGS_OPLOCK_REQUESTED_OR_GRANTED, FLAGS_PATH_NAMES_CANONICALIZED, FLAGS_PATH_NAMES_CASELESS, FLAGS_RECEIVE_BUFFER_POSTED, FLAGS_RESPONSE, FLAGS_TARGET_MUST_BE_DIRECTORY, FLAGS_TARGET_MUST_BE_FILE, FLAGS_TREE_COPY, FLAGS_VERIFY_ALL_WRITES, FLAGS2_EXTENDED_ATTRIBUTES, FLAGS2_EXTENDED_SECURITY_NEGOTIATION, FLAGS2_LONG_FILENAMES, FLAGS2_NONE, FLAGS2_PERMIT_READ_IF_EXECUTE_PERM, FLAGS2_RESOLVE_PATHS_IN_DFS, FLAGS2_SECURITY_REQUIRE_SIGNATURES, FLAGS2_SECURITY_SIGNATURES, FLAGS2_STATUS32, FLAGS2_UNICODE, FOREVER, GENERIC_ALL, GENERIC_EXECUTE, GENERIC_READ, GENERIC_WRITE, MILLISECONDS_BETWEEN_1970_AND_1601, O_APPEND, O_CREAT, O_EXCL, O_RDONLY, O_RDWR, O_TRUNC, O_WRONLY, OPEN_FUNCTION_FAIL_IF_EXISTS, OPEN_FUNCTION_OVERWRITE_IF_EXISTS, READ_CONTROL, SECURITY_SHARE, SECURITY_USER, SIGNATURE_OFFSET, SMB1_HEADER_LENGTH, SYNCHRONIZE, TID_OFFSET, TYPE_COMM, TYPE_FILESYSTEM, TYPE_NAMED_PIPE, TYPE_PRINTER, TYPE_SERVER, TYPE_SHARE, TYPE_WORKGROUP, WRITE_DAC, WRITE_OWNER -
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.SmbFile(String url, CIFSContext tc) Construct from string URLDeprecated.SmbFile(URL url, CIFSContext tc) Construct from URLSmbFile(SmbResource context, String name) Constructs an SmbFile representing a resource on an SMB network such as a file or directory. -
Method Summary
Modifier and TypeMethodDescriptionbooleancanRead()Tests to see if the file thisSmbResourcerepresents can be read.booleancanWrite()Tests to see if the file thisSmbResourcerepresents exists and is not marked read-only.children()Fetch all childrenFetch children matching pattern, server-side filteringchildren(ResourceFilter filter) Fetch children matching the given filter.children(ResourceNameFilter filter) Fetch children matching the given filter.voidclose()Close/release the file This releases all resources that this file holds.voidconnect()voidThis method will copy the file or directory represented by thisSmbResourceand it's sub-contents to the location specified by thedestparameter.voidCreate a new file but fail if it already exists.longRetrieve the time thisSmbResourcewas created.protected voidcustomizeCreate(SmbComNTCreateAndX request, SmbComNTCreateAndXResponse response) Customizes the NT create request and response for subclass-specific behaviorvoiddelete()This method will delete the file or directory specified by thisSmbResource.booleanTests to see if twoSmbFileobjects are equal.booleanexists()Tests to see if the SMB resource exists.longGet the file indexintReturn the attributes of this file.Returns the full URL of this SMB resource with '.' and '..' components factored out.Returns the Windows UNC style path with backslashes instead of forward slashes.intDeprecated.longThe context this file was opened withlonggetDate()This URLConnection method just returns the result oflastModified.If the path of thisSmbFilefalls within a DFS volume, this method will return the referral path to which it maps.longThis method returns the free disk space in bytes of the drive this share represents or the drive on which the directory or file resides.This URLConnection method just returns a newSmbFileInputStreamcreated with this file.longThis URLConnection method just returns the result oflastModified.Gets the file locator for this file The file locator provides details aboutgetName()Returns the last component of the target URL.Return the resolved owner group SID for this file or directorygetOwnerGroup(boolean resolve) Return the owner group SID for this file or directoryReturn the resolved owner user SID for this file or directorygetOwnerUser(boolean resolve) Return the owner user SID for this file or directoryEverything but the last component of the URL representing this SMB resource is effectively it's parent.getPath()Returns the full uncanonicalized URL of this SMB resource.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.Retrieve the hostname of the server for this SMB resource.Retrieve the hostname of the server for this SMB resource.getShare()Retrieves the share associated with this SMB resource.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.Deprecated.Retrieves the tree handle for this SMB resourceintgetType()Returns type of of object thisSmbResourcerepresents.Returns the UNC path of this resource relative to the shareinthashCode()Computes a hashCode for this file based on the URL string and IP address if the server.booleanTests to see if the file thisSmbResourcerepresents is a directory.booleanisFile()Tests to see if the file thisSmbResourcerepresents is not a directory.booleanisHidden()Tests to see if the file this SmbResource represents is marked as hidden.longRetrieve the last acces time of the file represented by thisSmbResourcelongRetrieve the last time the file represented by thisSmbResourcewas modified.longlength()Returns the length of thisSmbResourcein bytes.String[]list()List the contents of this SMB resource.String[]list(SmbFilenameFilter filter) List the contents of this SMB resource.SmbFile[]List the contents of this SMB resource as an array ofSmbResourceobjects.SmbFile[]The CIFS protocol provides for DOS "wildcards" to be used as a performance enhancement.SmbFile[]listFiles(SmbFileFilter filter) List the contents of this SMB resource.SmbFile[]listFiles(SmbFilenameFilter filter) List the contents of this SMB resource.voidmkdir()Creates a directory with the path specified by thisSmbResource.voidmkdirs()Creates a directory with the path specified by thisSmbResourceand 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)openRandomAccess(String mode) Opens the file for random accessopenRandomAccess(String mode, int sharing) Opens the file for random accessvoidChanges the name of the file thisSmbResourcerepresents to the name designated by theSmbResourceargument.voidrenameTo(SmbResource d, boolean replace) Changes the name of the file thisSmbResourcerepresents to the name designated by theSmbResourceargument.Fetch a child resourcevoidsetAttributes(int attrs) Set the attributes of this file.voidsetCreateTime(long time) Set the create time of the file.voidsetFileTimes(long createTime, long lastLastModified, long lastLastAccess) Set the create, last modified and last access time of the file.voidsetLastAccess(long time) Set the last access time of the file.voidsetLastModified(long time) Set the last modified time of the file.protected voidsetNonPooled(boolean nonPooled) Sets whether this file should use an exclusive (non-pooled) connectionvoidMake this file read-only.voidTurn off the read-only attribute of this file.toString()Returns the string representation of this SmbFile object.toURL()Deprecated.Use getURL() insteadwatch(int filter, boolean recursive) Creates a directory watch The server will notify the client when there are changes to the directories contentsprotected <T extends ServerMessageBlock2Response>
TwithOpen(org.codelibs.jcifs.smb.impl.SmbTreeHandleImpl th, int createDisposition, int createOptions, int fileAttributes, int desiredAccess, int shareAccess, ServerMessageBlock2Request<T> first, ServerMessageBlock2Request<?>... others) Executes a request within the context of an open file handle with full control over creation parametersprotected <T extends ServerMessageBlock2Response>
TwithOpen(org.codelibs.jcifs.smb.impl.SmbTreeHandleImpl th, int createDisposition, int desiredAccess, int shareAccess, ServerMessageBlock2Request<T> first, ServerMessageBlock2Request<?>... others) Executes a request within the context of an open file handle with specified accessprotected <T extends ServerMessageBlock2Response>
TwithOpen(org.codelibs.jcifs.smb.impl.SmbTreeHandleImpl th, ServerMessageBlock2Request<T> first, ServerMessageBlock2Request<?>... others) Executes a request within the context of an open file handleMethods inherited from class java.net.URLConnection
addRequestProperty, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentType, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderField, getHeaderFieldDate, getHeaderFieldInt, getHeaderFieldKey, getHeaderFieldLong, getHeaderFields, getIfModifiedSince, getPermission, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches
-
Field Details
-
ATTR_GET_MASK
protected static final int ATTR_GET_MASKMask for attributes that can be retrieved from the server- See Also:
-
ATTR_SET_MASK
protected static final int ATTR_SET_MASKMask for attributes that can be set on the server- See Also:
-
DEFAULT_ATTR_EXPIRATION_PERIOD
protected static final int DEFAULT_ATTR_EXPIRATION_PERIODDefault expiration period for cached attributes in milliseconds- See Also:
-
HASH_DOT
protected static final int HASH_DOTHash code for the "." directory entry -
HASH_DOT_DOT
protected static final int HASH_DOT_DOTHash code for the ".." directory entry -
fileLocator
protected final org.codelibs.jcifs.smb.impl.SmbResourceLocatorImpl fileLocatorThe resource locator containing the parsed SMB URL components
-
-
Constructor Details
-
SmbFile
Deprecated.Constructs an SmbFile representing a resource on an SMB network such as a file or directory. See the description and examples of smb URLs above.- Parameters:
url- A URL string- Throws:
MalformedURLException- if the URL string cannot be parsed as a valid SMB URL do not follow the prescribed syntax
-
SmbFile
Deprecated.Constructs an SmbFile representing a resource on an SMB network such as a file or directory from aURLobject.- Parameters:
url- The URL of the target resource- Throws:
MalformedURLException- if the URL is not properly formatted
-
SmbFile
Constructs an SmbFile representing a resource on an SMB network such as a file or directory. The second parameter is a relative path from theparent SmbFile. See the description above for examples of using the secondnameparameter.- Parameters:
context- A baseSmbFilethat serves as the parent resourcename- A path string relative to theparentparameter- Throws:
MalformedURLException- if the resulting URL is not properly formatted do not follow the prescribed syntaxUnknownHostException- If the server or workgroup of thecontextfile cannot be determined
-
SmbFile
Construct from string URL- Parameters:
url- the SMB URL stringtc- context to use- Throws:
MalformedURLException- if the URL is not properly formatted
-
SmbFile
Construct from URL- Parameters:
url- the URL object representing the SMB resourcetc- context to use- Throws:
MalformedURLException- if the URL is not properly formatted
-
-
Method Details
-
connect
- Specified by:
connectin classURLConnection- Throws:
IOException- See Also:
-
getTreeHandle
Retrieves the tree handle for this SMB resource- Returns:
- a tree handle
- Throws:
CIFSException- if the tree connection cannot be established
-
close
public 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:
closein interfaceAutoCloseable- Specified by:
closein interfaceSmbResource- See Also:
-
setNonPooled
protected void setNonPooled(boolean nonPooled) Sets whether this file should use an exclusive (non-pooled) connection- Parameters:
nonPooled- whether this file will use an exclusive connection
-
getTransportContext
Deprecated.Returns the transport context for this resource- Returns:
- the transportContext
-
getContext
Description copied from interface:SmbResourceThe context this file was opened with- Specified by:
getContextin interfaceSmbResource- Returns:
- the context associated with this file
-
getLocator
Description copied from interface:SmbResourceGets the file locator for this file The file locator provides details about- Specified by:
getLocatorin interfaceSmbResource- Returns:
- the fileLocator
-
resolve
Description copied from interface:SmbResourceFetch a child resource- Specified by:
resolvein interfaceSmbResource- Parameters:
name- the name of the child resource to resolve- Returns:
- the child resource
- Throws:
CIFSException- if an error occurs accessing the resource
-
getUncPath
Returns the UNC path of this resource relative to the share- Returns:
- this file's unc path below the share
-
customizeCreate
Customizes the NT create request and response for subclass-specific behavior- Parameters:
request- the create request to customizeresponse- the create response to customize
-
exists
Description copied from interface:SmbResourceTests 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 thisSmbResourcerefers to the rootsmb://resourcetrueis always returned. If thisSmbResourceis a traditional file or directory, it will be queried for on the specified server as expected.- Specified by:
existsin interfaceSmbResource- Returns:
trueif the resource exists or is alive orfalseotherwise- Throws:
SmbException
-
getType
Description copied from interface:SmbResourceReturns type of of object thisSmbResourcerepresents.- Specified by:
getTypein interfaceSmbResource- Returns:
TYPE_FILESYSTEM, TYPE_WORKGROUP, TYPE_SERVER, TYPE_SHARE, TYPE_PRINTER, TYPE_NAMED_PIPE, orTYPE_COMM.- Throws:
SmbException
-
getName
Description copied from interface:SmbResourceReturns the last component of the target URL. This will effectively be the name of the file or directory represented by thisSmbResourceor in the case of URLs that only specify a server or workgroup, the server or workgroup will be returned. The name of the root URLsmb://is alsosmb://. If thisSmbResourcerefers to a workgroup, server, share, or directory, the name will include a trailing slash '/' so that composing newSmbResources will maintain the trailing slash requirement.- Specified by:
getNamein interfaceSmbResource- Returns:
- The last component of the URL associated with this SMB
resource or
smb://if the resource issmb://itself.
-
getParent
Everything but the last component of the URL representing this SMB resource is effectively it's parent. The root URLsmb://does not have a parent. In this casesmb://is returned.- Returns:
- The parent directory of this SMB resource or
smb://if the resource refers to the root of the URL hierarchy which incidentally is alsosmb://.
-
getPath
Returns the full uncanonicalized URL of this SMB resource. AnSmbFileconstructed with the result of this method will result in anSmbFilethat is equal to the original.- Returns:
- The uncanonicalized full URL of this SMB resource.
-
getCanonicalUncPath
Returns the Windows UNC style path with backslashes instead of forward slashes.- Returns:
- The UNC path.
-
getDfsPath
If the path of thisSmbFilefalls within a DFS volume, this method will return the referral path to which it maps. Otherwisenullis returned.- Returns:
- URL to the DFS volume
- Throws:
SmbException- if an error occurs while resolving the DFS path
-
getCanonicalPath
Returns the full URL of this SMB resource with '.' and '..' components factored out. AnSmbFileconstructed with the result of this method will result in anSmbFilethat is equal to the original.- Returns:
- The canonicalized URL of this SMB resource.
-
getServerWithDfs
Retrieve the hostname of the server for this SMB resource. If the resources has been resolved by DFS this will return the target name.- Returns:
- The server name
-
getServer
Retrieve the hostname of the server for this SMB resource. If thisSmbFilereferences a workgroup, the name of the workgroup is returned. If thisSmbFilerefers to the root of this SMB network hierarchy,nullis returned.- Returns:
- The server or workgroup name or
nullif thisSmbFilerefers to the rootsmb://resource.
-
watch
Description copied from interface:SmbResourceCreates a directory watch The server will notify the client when there are changes to the directories contents- Specified by:
watchin interfaceSmbResource- Parameters:
filter- see constants inFileNotifyInformationrecursive- whether to also watch subdirectories- Returns:
- watch context, needs to be closed when finished
- Throws:
CIFSException- if an error occurs accessing the resource
-
canRead
Description copied from interface:SmbResourceTests to see if the file thisSmbResourcerepresents can be read. Because any file, directory, or other resource can be read if it exists, this method simply calls theexistsmethod.- Specified by:
canReadin interfaceSmbResource- Returns:
trueif the file is read-only- Throws:
SmbException
-
canWrite
Description copied from interface:SmbResourceTests to see if the file thisSmbResourcerepresents exists and is not marked read-only. By default, resources are considered to be read-only and therefore forsmb://,smb://workgroup/, andsmb://server/resources will be read-only.- Specified by:
canWritein interfaceSmbResource- Returns:
trueif the resource exists is not marked read-only- Throws:
SmbException
-
isDirectory
Description copied from interface:SmbResourceTests to see if the file thisSmbResourcerepresents is a directory.- Specified by:
isDirectoryin interfaceSmbResource- Returns:
trueif thisSmbResourceis a directory- Throws:
SmbException
-
isFile
Description copied from interface:SmbResourceTests to see if the file thisSmbResourcerepresents is not a directory.- Specified by:
isFilein interfaceSmbResource- Returns:
trueif thisSmbResourceis not a directory- Throws:
SmbException
-
isHidden
Description copied from interface:SmbResourceTests 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 asIPC$orC$.- Specified by:
isHiddenin interfaceSmbResource- Returns:
trueif theSmbResourceis marked as being hidden- Throws:
SmbException
-
createTime
Description copied from interface:SmbResourceRetrieve the time thisSmbResourcewas created. The value returned is suitable for constructing aDateobject (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.- Specified by:
createTimein interfaceSmbResource- Returns:
- The number of milliseconds since the 00:00:00 GMT, January 1,
1970 as a
longvalue - Throws:
SmbException
-
lastModified
Description copied from interface:SmbResourceRetrieve the last time the file represented by thisSmbResourcewas modified. The value returned is suitable for constructing aDateobject (i.e. seconds since Epoch 1970). Times should be the same as those reported using the properties dialog of the Windows Explorer program.- Specified by:
lastModifiedin interfaceSmbResource- Returns:
- The number of milliseconds since the 00:00:00 GMT, January 1,
1970 as a
longvalue - Throws:
SmbException
-
lastAccess
Description copied from interface:SmbResourceRetrieve the last acces time of the file represented by thisSmbResource- Specified by:
lastAccessin interfaceSmbResource- Returns:
- The number of milliseconds since the 00:00:00 GMT, January 1,
1970 as a
longvalue - Throws:
SmbException
-
list
List the contents of this SMB resource. The list returned by this method will be;- files and directories contained within this resource if the resource is a normal disk file directory,
- all available NetBIOS workgroups or domains if this resource is
the top level URL
smb://, - all servers registered as members of a NetBIOS workgroup if this
resource refers to a workgroup in a
smb://workgroup/URL, - all browseable shares of a server including printers, IPC
services, or disk volumes if this resource is a server URL in the form
smb://server/, - or
nullif the resource cannot be resolved.
- Returns:
- A
String[]array of files and directories, workgroups, servers, or shares depending on the context of the resource URL - Throws:
SmbException- if an error occurs while listing the contents
-
list
List the contents of this SMB resource. The list returned will be identical to the list returned by the parameterlesslist()method minus filenames filtered by the specified filter.- Parameters:
filter- a filename filter to exclude filenames from the results- Returns:
String[]array of matching files and directories, workgroups, servers, or shares depending on the context of the resource URL- Throws:
SmbException- # @return An array of filenames
-
listFiles
List the contents of this SMB resource as an array ofSmbResourceobjects. This method is much more efficient than the regularlistmethod when querying attributes of each file in the result set.The list of
SmbResources returned by this method will be;- files and directories contained within this resource if the resource is a normal disk file directory,
- all available NetBIOS workgroups or domains if this resource is
the top level URL
smb://, - all servers registered as members of a NetBIOS workgroup if this
resource refers to a workgroup in a
smb://workgroup/URL, - all browseable shares of a server including printers, IPC
services, or disk volumes if this resource is a server URL in the form
smb://server/, - or
nullif the resource cannot be resolved.
- Returns:
- An array of
SmbResourceobjects representing file and directories, workgroups, servers, or shares depending on the context of the resource URL - Throws:
SmbException- if an error occurs while listing the files
-
listFiles
The CIFS protocol provides for DOS "wildcards" to be used as a performance enhancement. The client does not have to filter the names and the server does not have to return all directory entries.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.
If strict resource lifecycle is used, make sure you close the individual files after use.winnt> ls c?o* clock.avi -rw-- 82944 Mon Oct 14 1996 1:38 AM Cookies drw-- 0 Fri Nov 13 1998 9:42 PM 2 items in 5ms
- Parameters:
wildcard- a wildcard expression- Returns:
- An array of
SmbResourceobjects representing file and directories, workgroups, servers, or shares depending on the context of the resource URL - Throws:
SmbException- if an error occurs while listing the files
-
listFiles
List the contents of this SMB resource. The list returned will be identical to the list returned by the parameterlesslistFiles()method minus files filtered by the specified filename filter. If strict resource lifecycle is used, make sure you close the individual files after use.- Parameters:
filter- a filter to exclude files from the results- Returns:
- An array of
SmbResourceobjects - Throws:
SmbException- if an error occurs while listing the files
-
listFiles
List the contents of this SMB resource. The list returned will be identical to the list returned by the parameterlesslistFiles()method minus filenames filtered by the specified filter. If strict resource lifecycle is used, make sure you close the individual files after use.- Parameters:
filter- a file filter to exclude files from the results- Returns:
- An array of
SmbResourceobjects - Throws:
SmbException- if an error occurs while listing the files
-
children
Description copied from interface:SmbResourceFetch all children- Specified by:
childrenin interfaceSmbResource- Returns:
- an iterator over the child resources
- Throws:
CIFSException- if an error occurs accessing the resource
-
children
Description copied from interface:SmbResourceFetch children matching pattern, server-side filteringThe 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.
- Specified by:
childrenin interfaceSmbResource- Parameters:
wildcard- the wildcard pattern to match- Returns:
- an iterator over the child resources
- Throws:
CIFSException- if an error occurs accessing the resource
-
children
Description copied from interface:SmbResourceFetch children matching the given filter.- Specified by:
childrenin interfaceSmbResource- 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
Description copied from interface:SmbResourceFetch children matching the given filter.- Specified by:
childrenin interfaceSmbResource- 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:
-
renameTo
Description copied from interface:SmbResourceChanges the name of the file thisSmbResourcerepresents to the name designated by theSmbResourceargument.
Remember:SmbResources are immutable and therefore the path associated with thisSmbResourceobject will not change). To access the renamed file it is necessary to construct a newSmbResource.- Specified by:
renameToin interfaceSmbResource- Parameters:
d- AnSmbResourcethat represents the new pathname- Throws:
SmbException
-
renameTo
Description copied from interface:SmbResourceChanges the name of the file thisSmbResourcerepresents to the name designated by theSmbResourceargument.
Remember:SmbResources are immutable and therefore the path associated with thisSmbResourceobject will not change). To access the renamed file it is necessary to construct a newSmbResource.- Specified by:
renameToin interfaceSmbResource- Parameters:
d- AnSmbResourcethat represents the new pathnamereplace- Whether an existing destination file should be replaced (only supported with SMB2)- Throws:
SmbException
-
copyTo
Description copied from interface:SmbResourceThis method will copy the file or directory represented by thisSmbResourceand it's sub-contents to the location specified by thedestparameter. 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.- Specified by:
copyToin interfaceSmbResource- Parameters:
d- the destination file or directory- Throws:
SmbException
-
delete
Description copied from interface:SmbResourceThis method will delete the file or directory specified by thisSmbResource. 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.- Specified by:
deletein interfaceSmbResource- Throws:
SmbException
-
length
Description copied from interface:SmbResourceReturns the length of thisSmbResourcein bytes. If this object is aTYPE_SHAREthe total capacity of the disk shared in bytes is returned. If this object is a directory or a type other thanTYPE_SHARE, 0L is returned.- Specified by:
lengthin interfaceSmbResource- Returns:
- The length of the file in bytes or 0 if this
SmbResourceis not a file. - Throws:
SmbException
-
getDiskFreeSpace
Description copied from interface:SmbResourceThis 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 thanTYPE_SHAREorTYPE_FILESYSTEMwill result in 0L being returned.- Specified by:
getDiskFreeSpacein interfaceSmbResource- Returns:
- the free disk space in bytes of the drive on which this file or directory resides
- Throws:
SmbException
-
mkdir
Description copied from interface:SmbResourceCreates a directory with the path specified by thisSmbResource. For this method to be successful, the target must not already exist. This method will fail when used withsmb://,smb://workgroup/,smb://server/, orsmb://server/share/URLs because workgroups, servers, and shares cannot be dynamically created (although in the future it may be possible to create shares).- Specified by:
mkdirin interfaceSmbResource- Throws:
SmbException
-
mkdirs
Description copied from interface:SmbResourceCreates a directory with the path specified by thisSmbResourceand any parent directories that do not exist. This method will fail when used withsmb://,smb://workgroup/,smb://server/, orsmb://server/share/URLs because workgroups, servers, and shares cannot be dynamically created (although in the future it may be possible to create shares).- Specified by:
mkdirsin interfaceSmbResource- Throws:
SmbException
-
withOpen
protected <T extends ServerMessageBlock2Response> T withOpen(org.codelibs.jcifs.smb.impl.SmbTreeHandleImpl th, ServerMessageBlock2Request<T> first, ServerMessageBlock2Request<?>... others) throws CIFSException Executes a request within the context of an open file handle- Type Parameters:
T- the response type- Parameters:
th- the tree handlefirst- the first request to executeothers- additional requests to chain- Returns:
- the response from the first request
- Throws:
CIFSException- if an error occurs
-
withOpen
protected <T extends ServerMessageBlock2Response> T withOpen(org.codelibs.jcifs.smb.impl.SmbTreeHandleImpl th, int createDisposition, int desiredAccess, int shareAccess, ServerMessageBlock2Request<T> first, ServerMessageBlock2Request<?>... others) throws CIFSException Executes a request within the context of an open file handle with specified access- Type Parameters:
T- the response type- Parameters:
th- the tree handlecreateDisposition- the create dispositiondesiredAccess- the desired access flagsshareAccess- the share access flagsfirst- the first request to executeothers- additional requests to chain- Returns:
- the response from the first request
- Throws:
CIFSException- if an error occurs
-
withOpen
protected <T extends ServerMessageBlock2Response> T withOpen(org.codelibs.jcifs.smb.impl.SmbTreeHandleImpl th, int createDisposition, int createOptions, int fileAttributes, int desiredAccess, int shareAccess, ServerMessageBlock2Request<T> first, ServerMessageBlock2Request<?>... others) throws CIFSException Executes a request within the context of an open file handle with full control over creation parameters- Type Parameters:
T- the response type- Parameters:
th- the tree handlecreateDisposition- the create dispositioncreateOptions- the create optionsfileAttributes- the file attributesdesiredAccess- the desired access flagsshareAccess- the share access flagsfirst- the first request to executeothers- additional requests to chain- Returns:
- the response from the first request
- Throws:
CIFSException- if an error occurs
-
createNewFile
Description copied from interface:SmbResourceCreate 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.- Specified by:
createNewFilein interfaceSmbResource- Throws:
SmbException
-
setFileTimes
public void setFileTimes(long createTime, long lastLastModified, long lastLastAccess) throws SmbException Description copied from interface:SmbResourceSet 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 thecreateTime(),lastModified(),lastAccess()methods.
This method does not apply to workgroups, servers, or shares.- Specified by:
setFileTimesin interfaceSmbResource- Parameters:
createTime- the create time as milliseconds since Jan 1, 1970lastLastModified- the last modified time as milliseconds since Jan 1, 1970lastLastAccess- the last access time as milliseconds since Jan 1, 1970- Throws:
SmbUnsupportedOperationException- if CAP_NT_SMBS is unavailableSmbException- See Also:
-
setCreateTime
Description copied from interface:SmbResourceSet 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 thecreateTime()method.
This method does not apply to workgroups, servers, or shares.- Specified by:
setCreateTimein interfaceSmbResource- Parameters:
time- the create time as milliseconds since Jan 1, 1970- Throws:
SmbUnsupportedOperationException- if CAP_NT_SMBS is unavailableSmbException
-
setLastModified
Description copied from interface:SmbResourceSet 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 thelastModified()method.
This method does not apply to workgroups, servers, or shares.- Specified by:
setLastModifiedin interfaceSmbResource- Parameters:
time- the last modified time as milliseconds since Jan 1, 1970- Throws:
SmbException
-
setLastAccess
Description copied from interface:SmbResourceSet 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 thelastAccess()method.
This method does not apply to workgroups, servers, or shares.- Specified by:
setLastAccessin interfaceSmbResource- Parameters:
time- the last access time as milliseconds since Jan 1, 1970- Throws:
SmbUnsupportedOperationException- if CAP_NT_SMBS is unavailableSmbException
-
getAttributes
Description copied from interface:SmbResourceReturn the attributes of this file. Attributes are represented as a bitset that must be masked withATTR_*constants to determine if they are set or unset. The value returned is suitable for use with thesetAttributes()method.- Specified by:
getAttributesin interfaceSmbResource- Returns:
- the
ATTR_*attributes associated with this file - Throws:
SmbException
-
setAttributes
Description copied from interface:SmbResourceSet the attributes of this file. Attributes are composed into a bitset by bitwise ORing theATTR_*constants. Setting the value returned bygetAttributeswill result in both files having the same attributes.- Specified by:
setAttributesin interfaceSmbResource- Parameters:
attrs- attribute flags- Throws:
SmbException
-
setReadOnly
Description copied from interface:SmbResourceMake this file read-only. This is shorthand forsetAttributes( getAttributes() | ATTR_READ_ONLY ).- Specified by:
setReadOnlyin interfaceSmbResource- Throws:
SmbException
-
setReadWrite
Description copied from interface:SmbResourceTurn off the read-only attribute of this file. This is shorthand forsetAttributes( getAttributes() & ~ATTR_READONLY ).- Specified by:
setReadWritein interfaceSmbResource- Throws:
SmbException
-
toURL
Deprecated.Use getURL() insteadReturns aURLfor thisSmbFile. TheURLmay be used as any otherURLmight to access an SMB resource. Currently only retrieving data and information is supported (i.e. nodoOutput).- Returns:
- A new
for thisURLSmbFile
-
hashCode
public int hashCode()Computes a hashCode for this file based on the URL string and IP address if the server. The hashing function uses the hashcode of the server address, the canonical representation of the URL, and does not compare authentication information. In essence, twoSmbFileobjects that refer to the same file should generate the same hashcode provided it is possible to make such a determination. -
equals
Tests to see if twoSmbFileobjects are equal. Two SmbFile objects are equal when they reference the same SMB resource. More specifically, twoSmbFileobjects are equals if their server IP addresses are equal and the canonicalized representation of their URLs, minus authentication parameters, are case insensitively and lexographically equal.
For example, assuming the serverangusresolves to the192.168.1.15IP address, the below URLs would result inSmbFiles that are equal.smb://192.168.1.15/share/DIR/foo.txt smb://angus/share/data/../dir/foo.txt
-
toString
Returns the string representation of this SmbFile object. This will be the same as the URL used to construct thisSmbFile. This method will return the same value asgetPath.- Overrides:
toStringin classURLConnection- Returns:
- The original URL representation of this SMB resource
-
getContentLength
Deprecated.This URLConnection method just returns the result oflength().- Overrides:
getContentLengthin classURLConnection- Returns:
- the length of this file or 0 if it refers to a directory
-
getContentLengthLong
public long getContentLengthLong()- Overrides:
getContentLengthLongin classURLConnection- See Also:
-
getDate
public long getDate()This URLConnection method just returns the result oflastModified.- Overrides:
getDatein classURLConnection- Returns:
- the last modified data as milliseconds since Jan 1, 1970
-
getLastModified
public long getLastModified()This URLConnection method just returns the result oflastModified.- Overrides:
getLastModifiedin classURLConnection- Returns:
- the last modified data as milliseconds since Jan 1, 1970
-
getInputStream
This URLConnection method just returns a newSmbFileInputStreamcreated with this file.- Overrides:
getInputStreamin classURLConnection- Throws:
IOException- thrown bySmbFileInputStreamconstructor
-
openInputStream
Description copied from interface:SmbResourceOpens an input stream reading the file (read only, sharable)- Specified by:
openInputStreamin interfaceSmbResource- Returns:
- input stream, needs to be closed when finished
- Throws:
SmbException
-
openInputStream
Description copied from interface:SmbResourceOpens an input stream reading the file (read only)- Specified by:
openInputStreamin interfaceSmbResource- Parameters:
sharing- flags indicating for which operations others may open the file (FILE_SHARING_*)- Returns:
- input stream, needs to be closed when finished
- Throws:
SmbException
-
openInputStream
Description copied from interface:SmbResourceOpens an input stream reading the file (read only)- Specified by:
openInputStreamin interfaceSmbResource- Parameters:
flags- open flagsaccess- desired access flagssharing- flags indicating for which operations others may open the file (FILE_SHARING_*)- Returns:
- input stream, needs to be closed when finished
- Throws:
SmbException
-
getOutputStream
- Overrides:
getOutputStreamin classURLConnection- Throws:
IOException
-
openOutputStream
Description copied from interface:SmbResourceOpens an output stream writing to the file (truncating, write only, sharable)- Specified by:
openOutputStreamin interfaceSmbResource- Returns:
- output stream, needs to be closed when finished
- Throws:
SmbException
-
openOutputStream
Description copied from interface:SmbResourceOpens an output stream writing to the file (write only, read sharable)- Specified by:
openOutputStreamin interfaceSmbResource- Parameters:
append- whether to append to or truncate the input- Returns:
- output stream, needs to be closed when finished
- Throws:
SmbException
-
openOutputStream
Description copied from interface:SmbResourceOpens an output stream writing to the file (write only, exclusive write access)- Specified by:
openOutputStreamin interfaceSmbResource- Parameters:
append- whether to append to or truncate the inputsharing- flags indicating for which operations others may open the file (FILE_SHARING_*)- Returns:
- output stream, needs to be closed when finished
- Throws:
SmbException
-
openOutputStream
public SmbFileOutputStream openOutputStream(boolean append, int openFlags, int access, int sharing) throws SmbException Description copied from interface:SmbResourceOpens an output stream writing to the file (write only, exclusive write access)- Specified by:
openOutputStreamin interfaceSmbResource- Parameters:
append- whether to append to or truncate the inputopenFlags- flags for open operationaccess- desired file access flagssharing- flags indicating for which operations others may open the file- Returns:
- output stream, needs to be closed when finished
- Throws:
SmbException
-
openRandomAccess
Description copied from interface:SmbResourceOpens the file for random access- Specified by:
openRandomAccessin interfaceSmbResource- Parameters:
mode- access mode (r|rw)- Returns:
- random access file, needs to be closed when finished
- Throws:
SmbException
-
openRandomAccess
Description copied from interface:SmbResourceOpens the file for random access- Specified by:
openRandomAccessin interfaceSmbResource- 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:
SmbException
-
fileIndex
Description copied from interface:SmbResourceGet the file index- Specified by:
fileIndexin interfaceSmbResource- Returns:
- server side file index, 0 if unavailable
- Throws:
SmbException
-
getSecurity
Description copied from interface:SmbResourceReturn 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(), ortoString()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 (usuallyS-X-Y-Zstrings of fragments of).Alternatively
getSecurity(true)may be used to resolve all SIDs together and detect network failures.- Specified by:
getSecurityin interfaceSmbResource- Returns:
- array of ACEs
- Throws:
IOException- if an I/O error occurs
-
getSecurity
Description copied from interface:SmbResourceReturn 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.- Specified by:
getSecurityin interfaceSmbResource- 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
-
getOwnerUser
Description copied from interface:SmbResourceReturn the resolved owner user SID for this file or directory- Specified by:
getOwnerUserin interfaceSmbResource- Returns:
- the owner user SID,
nullif not present - Throws:
IOException- if an I/O error occurs
-
getOwnerUser
Description copied from interface:SmbResourceReturn the owner user SID for this file or directory- Specified by:
getOwnerUserin interfaceSmbResource- Parameters:
resolve- whether to resolve the user name- Returns:
- the owner user SID,
nullif not present - Throws:
IOException- if an I/O error occurs
-
getOwnerGroup
Description copied from interface:SmbResourceReturn the resolved owner group SID for this file or directory- Specified by:
getOwnerGroupin interfaceSmbResource- Returns:
- the owner group SID,
nullif not present - Throws:
IOException- if an I/O error occurs
-
getOwnerGroup
Description copied from interface:SmbResourceReturn the owner group SID for this file or directory- Specified by:
getOwnerGroupin interfaceSmbResource- Parameters:
resolve- whether to resolve the group name- Returns:
- the owner group SID,
nullif not present - Throws:
IOException- if an I/O error occurs
-