/**
   * Returns a reference to a {@link CloudFileDirectory} object that represents a subdirectory in
   * this directory.
   *
   * @param itemName A <code>String</code> that represents the name of the subdirectory.
   * @return A {@link CloudFileDirectory} object that represents a reference to the specified
   *     directory.
   * @throws URISyntaxException If the resource URI is invalid.
   * @throws StorageException
   */
  public CloudFileDirectory getSubDirectoryReference(final String itemName)
      throws URISyntaxException, StorageException {
    Utility.assertNotNullOrEmpty("itemName", itemName);

    StorageUri subdirectoryUri = PathUtility.appendPathToUri(this.storageUri, itemName);
    return new CloudFileDirectory(subdirectoryUri, itemName, this.getShare());
  }
  /**
   * Returns a reference to a {@link CloudFile} object that represents a file in this directory.
   *
   * @param fileName A <code>String</code> that represents the name of the file.
   * @return A {@link CloudFile} object that represents a reference to the specified file.
   * @throws StorageException If a storage service error occurred.
   * @throws URISyntaxException If the resource URI is invalid.
   */
  public CloudFile getFileReference(final String fileName)
      throws URISyntaxException, StorageException {
    Utility.assertNotNullOrEmpty("fileName", fileName);

    StorageUri subdirectoryUri = PathUtility.appendPathToUri(this.storageUri, fileName);

    return new CloudFile(subdirectoryUri, this.fileServiceClient, this.getShare());
  }