ShareDirectoryClient Class

Definition

  • java.lang.Object
    • com.azure.storage.file.share.ShareDirectoryClient

This class provides a client that contains all the operations for interacting with directory in Azure Storage File Service. Operations allowed by the client are creating, deleting and listing subdirectory and file, retrieving properties, setting metadata and list or force close handles of the directory or file.

Instantiating an Synchronous Directory Client

ShareDirectoryClient client = new ShareFileClientBuilder()
     .connectionString("${connectionString}")
     .endpoint("${endpoint}")
     .buildDirectoryClient();

View ShareFileClientBuilder for additional ways to construct the client.

public class ShareDirectoryClient

Methods

create()

Creates a directory in the file share and returns a response of ShareDirectoryInfo to interact with it.

Code Samples

Create the directory

shareDirectoryClient.create();
 System.out.println("Completed creating the directory. ");

For more information, see the Azure Docs.

createFile(String fileName, long maxSize)

Creates a file in this directory with specific name, max number of results and returns a response of ShareDirectoryInfo to interact with it.

Code Samples

Create 1k file with named "myFile"

ShareFileClient response = shareDirectoryClient.createFile("myfile", 1024);
 System.out.println("Completed creating the file: " + response);

For more information, see the Azure Docs.

createFileWithResponse(String fileName, long maxSize, ShareFileHttpHeaders httpHeaders, FileSmbProperties smbProperties, String filePermission, Map<String,String> metadata, ShareRequestConditions requestConditions, Duration timeout, Context context)

Creates a file in this directory with specific name and returns a response of ShareDirectoryInfo to interact with it.

Code Samples

Create the file named "myFile"

ShareFileHttpHeaders httpHeaders = new ShareFileHttpHeaders()
     .setContentType("text/html")
     .setContentEncoding("gzip")
     .setContentLanguage("en")
     .setCacheControl("no-transform")
     .setContentDisposition("attachment");
 FileSmbProperties smbProperties = new FileSmbProperties()
     .setNtfsFileAttributes(EnumSet.of(NtfsFileAttributes.READ_ONLY))
     .setFileCreationTime(OffsetDateTime.now())
     .setFileLastWriteTime(OffsetDateTime.now())
     .setFilePermissionKey("filePermissionKey");
 String filePermission = "filePermission";
 // NOTE: filePermission and filePermissionKey should never be both set

 ShareRequestConditions requestConditions = new ShareRequestConditions().setLeaseId(leaseId);

 Response<ShareFileClient> response = shareDirectoryClient.createFileWithResponse("myFile", 1024,
     httpHeaders, smbProperties, filePermission, Collections.singletonMap("directory", "metadata"),
     requestConditions, Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed creating the file with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

createFileWithResponse(String fileName, long maxSize, ShareFileHttpHeaders httpHeaders, FileSmbProperties smbProperties, String filePermission, Map<String,String> metadata, Duration timeout, Context context)

Creates a file in this directory with specific name and returns a response of ShareDirectoryInfo to interact with it.

Code Samples

Create the file named "myFile"

ShareFileHttpHeaders httpHeaders = new ShareFileHttpHeaders()
     .setContentType("text/html")
     .setContentEncoding("gzip")
     .setContentLanguage("en")
     .setCacheControl("no-transform")
     .setContentDisposition("attachment");
 FileSmbProperties smbProperties = new FileSmbProperties()
     .setNtfsFileAttributes(EnumSet.of(NtfsFileAttributes.READ_ONLY))
     .setFileCreationTime(OffsetDateTime.now())
     .setFileLastWriteTime(OffsetDateTime.now())
     .setFilePermissionKey("filePermissionKey");
 String filePermission = "filePermission";
 // NOTE: filePermission and filePermissionKey should never be both set
 Response<ShareFileClient> response = shareDirectoryClient.createFileWithResponse("myFile", 1024,
     httpHeaders, smbProperties, filePermission, Collections.singletonMap("directory", "metadata"),
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed creating the file with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

createSubdirectory(String subdirectoryName)

Creates a subdirectory under current directory with specific name and returns a response of ShareDirectoryClient to interact with it.

Code Samples

Create the sub directory "subdir"

shareDirectoryClient.createSubdirectory("subdir");
 System.out.println("Completed creating the subdirectory.");

For more information, see the Azure Docs.

createSubdirectoryWithResponse(String subdirectoryName, FileSmbProperties smbProperties, String filePermission, Map<String,String> metadata, Duration timeout, Context context)

Creates a subdirectory under current directory with specific name , metadata and returns a response of ShareDirectoryClient to interact with it.

Code Samples

Create the subdirectory named "subdir", with metadata

FileSmbProperties smbProperties = new FileSmbProperties();
 String filePermission = "filePermission";
 Response<ShareDirectoryClient> response = shareDirectoryClient.createSubdirectoryWithResponse("subdir",
     smbProperties, filePermission, Collections.singletonMap("directory", "metadata"),
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.printf("Creating the sub directory completed with status code %d", response.getStatusCode());

For more information, see the Azure Docs.

createWithResponse(FileSmbProperties smbProperties, String filePermission, Map<String,String> metadata, Duration timeout, Context context)

Creates a directory in the file share and returns a response of ShareDirectoryInfo to interact with it.

Code Samples

Create the directory

FileSmbProperties smbProperties = new FileSmbProperties();
 String filePermission = "filePermission";
 Response<ShareDirectoryInfo> response = shareDirectoryClient.createWithResponse(smbProperties, filePermission,
     Collections.singletonMap("directory", "metadata"), Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed creating the directory with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

delete()

Deletes the directory in the file share. The directory must be empty before it can be deleted.

Code Samples

Delete the directory

shareDirectoryClient.delete();
 System.out.println("Completed deleting the file.");

For more information, see the Azure Docs.

deleteFile(String fileName)

Deletes the file with specific name in this directory.

Code Samples

Delete the file "filetest"

shareDirectoryClient.deleteFile("myfile");
 System.out.println("Completed deleting the file.");

For more information, see the Azure Docs.

deleteFileWithResponse(String fileName, ShareRequestConditions requestConditions, Duration timeout, Context context)

Deletes the file with specific name in this directory.

Code Samples

Delete the file "filetest"

ShareRequestConditions requestConditions = new ShareRequestConditions().setLeaseId(leaseId);
 Response<Void> response = shareDirectoryClient.deleteFileWithResponse("myfile", requestConditions,
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed deleting the file with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

deleteFileWithResponse(String fileName, Duration timeout, Context context)

Deletes the file with specific name in this directory.

Code Samples

Delete the file "filetest"

Response<Void> response = shareDirectoryClient.deleteFileWithResponse("myfile",
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed deleting the file with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

deleteSubdirectory(String subdirectoryName)

Deletes the subdirectory with specific name in this directory. The directory must be empty before it can be deleted.

Code Samples

Delete the subdirectory named "subdir"

shareDirectoryClient.deleteSubdirectory("mysubdirectory");
 System.out.println("Complete deleting the subdirectory.");

For more information, see the Azure Docs.

deleteSubdirectoryWithResponse(String subdirectoryName, Duration timeout, Context context)

Deletes the subdirectory with specific name in this directory. The directory must be empty before it can be deleted.

Code Samples

Delete the subdirectory named "subdir"

Response<Void> response = shareDirectoryClient.deleteSubdirectoryWithResponse("mysubdirectory",
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed deleting the subdirectory with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

deleteWithResponse(Duration timeout, Context context)

Deletes the directory in the file share. The directory must be empty before it can be deleted.

Code Samples

Delete the directory

Response<Void> response = shareDirectoryClient.deleteWithResponse(Duration.ofSeconds(1), new Context(key1, value1));
 System.out.println("Completed deleting the file with status code: " + response.getStatusCode());

For more information, see the Azure Docs.

exists()

Determines if the directory this client represents exists in the cloud.

Code Samples

System.out.printf("Exists? %b%n", client.exists());
existsWithResponse(Duration timeout, Context context)

Determines if the directory this client represents exists in the cloud.

Code Samples

Context context = new Context("Key", "Value");
 System.out.printf("Exists? %b%n", client.existsWithResponse(timeout, context).getValue());
forceCloseAllHandles(boolean recursive, Duration timeout, Context context)

Closes all handles opened on the directory at the service.

Code Samples

Force close all handles recursively.

CloseHandlesInfo closeHandlesInfo = shareDirectoryClient.forceCloseAllHandles(true, Duration.ofSeconds(30),
     Context.NONE);
 System.out.printf("Closed %d open handles on the directory%n", closeHandlesInfo.getClosedHandles());
 System.out.printf("Failed to close %d open handles on the directory%n", closeHandlesInfo.getFailedHandles());

For more information, see the Azure Docs.

forceCloseHandle(String handleId)

Closes a handle on the directory at the service. This is intended to be used alongside listHandles(Integer maxResultsPerPage, boolean recursive, Duration timeout, Context context).

Code Samples

Force close handles returned by list handles.

shareDirectoryClient.listHandles(null, true, Duration.ofSeconds(30), Context.NONE).forEach(handleItem -> {
     shareDirectoryClient.forceCloseHandle(handleItem.getHandleId());
     System.out.printf("Closed handle %s on resource %s%n", handleItem.getHandleId(), handleItem.getPath());
 });

For more information, see the Azure Docs.

forceCloseHandleWithResponse(String handleId, Duration timeout, Context context)

Closes a handle on the directory at the service. This is intended to be used alongside listHandles(Integer maxResultsPerPage, boolean recursive, Duration timeout, Context context).

Code Samples

Force close handles returned by list handles.

shareDirectoryClient.listHandles(null, true, Duration.ofSeconds(30), Context.NONE).forEach(handleItem -> {
     Response<CloseHandlesInfo> closeResponse = shareDirectoryClient.forceCloseHandleWithResponse(
         handleItem.getHandleId(), Duration.ofSeconds(30), Context.NONE);
     System.out.printf("Closing handle %s on resource %s completed with status code %d%n",
         handleItem.getHandleId(), handleItem.getPath(), closeResponse.getStatusCode());
 });

For more information, see the Azure Docs.

generateSas(ShareServiceSasSignatureValues shareServiceSasSignatureValues)

Generates a service SAS for the directory using the specified ShareServiceSasSignatureValues

Note : The client must be authenticated via StorageSharedKeyCredential

See ShareServiceSasSignatureValues for more information on how to construct a service SAS.

Code Samples

OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
 ShareFileSasPermission permission = new ShareFileSasPermission().setReadPermission(true);

 ShareServiceSasSignatureValues values = new ShareServiceSasSignatureValues(expiryTime, permission)
     .setStartTime(OffsetDateTime.now());

 shareDirectoryClient.generateSas(values); // Client must be authenticated via StorageSharedKeyCredential
generateSas(ShareServiceSasSignatureValues shareServiceSasSignatureValues, Context context)

Generates a service SAS for the directory using the specified ShareServiceSasSignatureValues

Note : The client must be authenticated via StorageSharedKeyCredential

See ShareServiceSasSignatureValues for more information on how to construct a service SAS.

Code Samples

OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
 ShareFileSasPermission permission = new ShareFileSasPermission().setReadPermission(true);

 ShareServiceSasSignatureValues values = new ShareServiceSasSignatureValues(expiryTime, permission)
     .setStartTime(OffsetDateTime.now());

 // Client must be authenticated via StorageSharedKeyCredential
 shareDirectoryClient.generateSas(values, new Context("key", "value"));
getAccountName()

Get associated account name.

getDirectoryPath()

Get the directory path of the client.

Get directory path.

String directoryPath = shareDirectoryClient.getDirectoryPath();
 System.out.println("The name of the directory is " + directoryPath);
getDirectoryUrl()

Get the url of the storage directory client.

getFileClient(String fileName)

Constructs a ShareFileClient that interacts with the specified file.

If the file doesn't exist in this directory create(long maxSize) create} in the client will need to be called before interaction with the file can happen.

getHttpPipeline()

Gets the HttpPipeline powering this client.

getProperties()

Retrieves the properties of this directory. The properties includes directory metadata, last modified date, is server encrypted, and eTag.

Code Samples

Retrieve directory properties

ShareDirectoryProperties response = shareDirectoryClient.getProperties();
 System.out.printf("Directory latest modified date is %s.", response.getLastModified());

For more information, see the Azure Docs.

getPropertiesWithResponse(Duration timeout, Context context)

Retrieves the properties of this directory. The properties includes directory metadata, last modified date, is server encrypted, and eTag.

Code Samples

Retrieve directory properties

Response<ShareDirectoryProperties> response = shareDirectoryClient.getPropertiesWithResponse(
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.printf("Directory latest modified date is %s.", response.getValue().getLastModified());

For more information, see the Azure Docs.

getServiceVersion()

Gets the service version the client is using.

getShareName()

Get the share name of directory client.

Get the share name.

String shareName = directoryAsyncClient.getShareName();
 System.out.println("The share name of the directory is " + shareName);
getShareSnapshotId()

Get snapshot id which attached to ShareDirectoryClient. Return null if no snapshot id attached.

Code Samples

Get the share snapshot id.

OffsetDateTime currentTime = OffsetDateTime.of(LocalDateTime.now(), ZoneOffset.UTC);
 ShareDirectoryClient shareDirectoryClient = new ShareFileClientBuilder()
     .endpoint("https://${accountName}.file.core.windows.net")
     .sasToken("${SASToken}")
     .shareName("myshare")
     .resourcePath("mydirectory")
     .snapshot(currentTime.toString())
     .buildDirectoryClient();

 System.out.printf("Snapshot ID: %s%n", shareDirectoryClient.getShareSnapshotId());
getSubdirectoryClient(String subdirectoryName)

Constructs a ShareDirectoryClient that interacts with the specified directory.

If the file doesn't exist in this directory create() create} in the client will need to be called before interaction with the directory can happen.

listFilesAndDirectories()

Lists all sub-directories and files in this directory without their prefix or maxResult in single page.

Code Samples

List all sub-directories and files in the account

shareDirectoryClient.listFilesAndDirectories().forEach(
     fileRef -> System.out.printf("Is the resource a directory? %b. The resource name is: %s.",
         fileRef.isDirectory(), fileRef.getName())
 );

For more information, see the Azure Docs.

listFilesAndDirectories(ShareListFilesAndDirectoriesOptions options, Duration timeout, Context context)

Lists all sub-directories and files in this directory with their prefix or snapshots.

Code Samples

List all sub-directories and files in this directory with "subdir" prefix and return 10 results in the account

shareDirectoryClient.listFilesAndDirectories(new ShareListFilesAndDirectoriesOptions()
         .setPrefix("subdir").setMaxResultsPerPage(10), Duration.ofSeconds(1), new Context(key1, value1))
     .forEach(fileRef -> System.out.printf("Is the resource a directory? %b. The resource name is: %s.",
         fileRef.isDirectory(), fileRef.getName()));

For more information, see the Azure Docs.

listFilesAndDirectories(String prefix, Integer maxResultsPerPage, Duration timeout, Context context)

Lists all sub-directories and files in this directory with their prefix or snapshots.

Code Samples

List all sub-directories and files in this directory with "subdir" prefix and return 10 results in the account

shareDirectoryClient.listFilesAndDirectories("subdir", 10, Duration.ofSeconds(1),
     new Context(key1, value1)).forEach(
         fileRef -> System.out.printf("Is the resource a directory? %b. The resource name is: %s.",
             fileRef.isDirectory(), fileRef.getName())
 );

For more information, see the Azure Docs.

listHandles(Integer maxResultsPerPage, boolean recursive, Duration timeout, Context context)

List of open handles on a directory or a file.

Code Samples

Get 10 handles with recursive call.

Iterable<HandleItem> result = shareDirectoryClient.listHandles(10, true, Duration.ofSeconds(1),
     new Context(key1, value1));
 System.out.printf("Get handles completed with handle id %s", result.iterator().next().getHandleId());

For more information, see the Azure Docs.

rename(String destinationPath)

Moves the directory to another location within the share. For more information see the Azure Docs.

Code Samples

ShareDirectoryClient renamedClient = client.rename(destinationPath);
 System.out.println("Directory Client has been renamed");
renameWithResponse(ShareFileRenameOptions options, Duration timeout, Context context)

Moves the directory to another location within the share. For more information see the Azure Docs.

Code Samples

FileSmbProperties smbProperties = new FileSmbProperties()
     .setNtfsFileAttributes(EnumSet.of(NtfsFileAttributes.READ_ONLY))
     .setFileCreationTime(OffsetDateTime.now())
     .setFileLastWriteTime(OffsetDateTime.now())
     .setFilePermissionKey("filePermissionKey");
 ShareFileRenameOptions options = new ShareFileRenameOptions(destinationPath)
     .setDestinationRequestConditions(new ShareRequestConditions().setLeaseId(leaseId))
     .setSourceRequestConditions(new ShareRequestConditions().setLeaseId(leaseId))
     .setIgnoreReadOnly(false)
     .setReplaceIfExists(false)
     .setFilePermission("filePermission")
     .setSmbProperties(smbProperties);

 ShareDirectoryClient newRenamedClient = client.renameWithResponse(options, timeout,
     new Context(key1, value1)).getValue();
 System.out.println("Directory Client has been renamed");
setMetadata(Map<String,String> metadata)

Sets the user-defined metadata to associate to the directory.

If null is passed for the metadata it will clear the metadata associated to the directory.

Code Samples

Set the metadata to "directory:updatedMetadata"

ShareDirectorySetMetadataInfo response =
     shareDirectoryClient.setMetadata(Collections.singletonMap("directory", "updatedMetadata"));
 System.out.printf("Setting the directory metadata completed with updated etag %s", response.getETag());

Clear the metadata of the directory

ShareDirectorySetMetadataInfo response = shareDirectoryClient.setMetadata(null);
 System.out.printf("Cleared metadata.");

For more information, see the Azure Docs.

setMetadataWithResponse(Map<String,String> metadata, Duration timeout, Context context)

Sets the user-defined metadata to associate to the directory.

If null is passed for the metadata it will clear the metadata associated to the directory.

Code Samples

Set the metadata to "directory:updatedMetadata"

Response<ShareDirectorySetMetadataInfo> response =
     shareDirectoryClient.setMetadataWithResponse(Collections.singletonMap("directory", "updatedMetadata"),
         Duration.ofSeconds(1), new Context(key1, value1));
 System.out.printf("Setting the directory metadata completed with updated etag %d", response.getStatusCode());

Clear the metadata of the directory

Response<ShareDirectorySetMetadataInfo> response = shareDirectoryClient.setMetadataWithResponse(null,
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.printf("Directory latest modified date is %s.", response.getStatusCode());

For more information, see the Azure Docs.

setProperties(FileSmbProperties smbProperties, String filePermission)

Sets the properties of this directory. The properties include the file SMB properties and the file permission.

Code Samples

Set directory properties

FileSmbProperties smbProperties = new FileSmbProperties();
 String filePermission = "filePermission";
 ShareDirectoryInfo response = shareDirectoryClient.setProperties(smbProperties, filePermission);
 System.out.printf("Directory latest modified date is %s.", response.getLastModified());

For more information, see the Azure Docs.

setPropertiesWithResponse(FileSmbProperties smbProperties, String filePermission, Duration timeout, Context context)

Sets the properties of this directory. The properties include the file SMB properties and the file permission.

Code Samples

Set directory properties

FileSmbProperties smbProperties = new FileSmbProperties();
 String filePermission = "filePermission";
 Response<ShareDirectoryInfo> response = shareDirectoryClient.setPropertiesWithResponse(smbProperties, filePermission,
     Duration.ofSeconds(1), new Context(key1, value1));
 System.out.printf("Directory latest modified date is %s.", response.getValue().getLastModified());

For more information, see the Azure Docs.

Inherited Members

java.lang.Object.clone() java.lang.Object.equals(java.lang.Object) java.lang.Object.finalize() java.lang.Object.getClass() java.lang.Object.hashCode() java.lang.Object.notify() java.lang.Object.notifyAll() java.lang.Object.toString() java.lang.Object.wait() java.lang.Object.wait(long) java.lang.Object.wait(long,int)

Applies to