ShareDirectoryClient class
ShareDirectoryClient 表示 Azure 存储目录的 URL,允许你作其文件和目录。
- 扩展
-
StorageClient
构造函数
| Share |
创建 DirectoryClient 的实例。 |
| Share |
创建 DirectoryClient 的实例。 |
继承属性
| account |
|
| url | URL 字符串值。 |
方法
| create(Directory |
在指定的共享或父目录下创建新目录。 请参阅 https://free.blessedness.top/rest/api/storageservices/create-directory |
| create |
创建新文件或替换此目录下的文件。 请注意,它仅初始化没有内容的文件。 请参阅 https://free.blessedness.top/rest/api/storageservices/create-file |
| create |
如果指定的共享或父目录尚不存在,则创建一个新目录。 如果目录已存在,则不会对其进行修改。 请参阅 https://free.blessedness.top/rest/api/storageservices/create-directory |
| create |
在此目录下创建新的子目录。 请参阅 https://free.blessedness.top/rest/api/storageservices/create-directory |
| delete(Directory |
删除指定的空目录。 请注意,目录必须为空,然后才能将其删除。 请参阅 https://free.blessedness.top/rest/api/storageservices/delete-directory |
| delete |
从存储帐户中删除此目录下的指定文件。 成功删除文件时,会立即从存储帐户的索引中删除该文件,并且客户端不再可访问该文件。 在垃圾回收期间,文件的数据稍后会从服务中删除。 如果文件在 SMB 客户端上打开,则删除文件将失败,状态代码为 409(冲突)和错误代码 SharingViolation。 共享快照不支持删除文件,这是共享的只读副本。 尝试对共享快照执行此作将失败,但 400 (InvalidQueryParameterValue) 请参阅 https://free.blessedness.top/rest/api/storageservices/delete-file2 |
| delete |
删除指定的空目录(如果存在)。 请注意,目录必须为空,然后才能将其删除。 请参阅 https://free.blessedness.top/rest/api/storageservices/delete-directory |
| delete |
删除此目录下的指定空子目录。 请注意,目录必须为空,然后才能将其删除。 请参阅 https://free.blessedness.top/rest/api/storageservices/delete-directory |
| exists(Directory |
如果指定的目录存在,则返回 true;否则为 false。 注意:请谨慎使用此函数,因为现有目录可能被其他客户端或应用程序删除。 反之亦然,此函数完成后,其他客户端或应用程序可能会添加新目录。 |
| force |
强制关闭目录的所有句柄。 请参阅 https://free.blessedness.top/rest/api/storageservices/force-close-handles |
| force |
强制关闭目录的特定句柄。 请参阅 https://free.blessedness.top/rest/api/storageservices/force-close-handles |
| get |
为子目录创建 ShareDirectoryClient 对象。 |
| get |
创建 ShareFileClient 对象。 |
| get |
返回指定目录的所有系统属性,还可用于检查目录是否存在。 返回的数据不包括目录或任何子目录中的文件。 请参阅 https://free.blessedness.top/rest/api/storageservices/get-directory-properties |
| list |
返回异步可迭代迭代器以列出指定帐户下的所有文件和目录。 .byPage() 返回异步可迭代迭代器以列出页面中的文件和目录。 使用
使用
使用
对标记使用分页的示例:
|
| list |
返回异步可迭代迭代器以列出所有句柄。 在指定的帐户下。 .byPage() 返回异步可迭代迭代器以列出页面中的句柄。 使用
使用
使用
对标记使用分页的示例:
|
| rename(string, Directory |
重命名目录。 此 API 仅支持重命名同一共享中的目录。 |
| set |
更新指定目录的用户定义元数据。 请参阅 https://free.blessedness.top/rest/api/storageservices/set-directory-metadata |
| set |
设置目录的属性。 请参阅 https://free.blessedness.top/rest/api/storageservices/set-directory-properties |
构造函数详细信息
ShareDirectoryClient(string, Credential | TokenCredential, ShareClientOptions)
创建 DirectoryClient 的实例。
new ShareDirectoryClient(url: string, credential?: Credential | TokenCredential, options?: ShareClientOptions)
参数
- url
-
string
指向 Azure 存储文件目录的 URL 字符串,例如“https://myaccount.file.core.windows.net/myshare/mydirectory"。 如果使用 AnonymousCredential(如“https://myaccount.file.core.windows.net/myshare/mydirectory?sasString"),则可以追加 SAS。 此方法接受指向目录的编码 URL 或非编码 URL。 编码的 URL 字符串不会转义两次,只会转义 URL 路径中的特殊字符。 但是,如果目录名称包含 %,则必须在 URL 中编码目录名称。 例如名为“mydir%”的目录,URL 应为“https://myaccount.file.core.windows.net/myshare/mydir%25"。
- credential
例如 AnonymousCredential 或 StorageSharedKeyCredential。 如果未指定,则使用 AnonymousCredential。
- options
- ShareClientOptions
Optional. 用于配置 HTTP 管道的选项。
ShareDirectoryClient(string, Pipeline, ShareClientConfig)
创建 DirectoryClient 的实例。
new ShareDirectoryClient(url: string, pipeline: Pipeline, options?: ShareClientConfig)
参数
- url
-
string
指向 Azure 存储文件目录的 URL 字符串,例如“https://myaccount.file.core.windows.net/myshare/mydirectory"。 如果使用 AnonymousCredential(如“https://myaccount.file.core.windows.net/myshare/mydirectory?sasString"),则可以追加 SAS。 此方法接受指向目录的编码 URL 或非编码 URL。 编码的 URL 字符串不会转义两次,只会转义 URL 路径中的特殊字符。 但是,如果目录名称包含 %,则必须在 URL 中编码目录名称。 例如名为“mydir%”的目录,URL 应为“https://myaccount.file.core.windows.net/myshare/mydir%25"。
- pipeline
- Pipeline
调用 newPipeline()以创建默认管道,或提供自定义管道。
- options
- ShareClientConfig
属性详细信息
name
目录的名称
string name
属性值
string
path
目录的完整路径
string path
属性值
string
shareName
与此目录客户端对应的共享名称
string shareName
属性值
string
继承属性详细信息
accountName
accountName: string
属性值
string
继承自 StorageClient.accountName
url
URL 字符串值。
url: string
属性值
string
继承自 StorageClient.url
方法详细信息
create(DirectoryCreateOptions)
在指定的共享或父目录下创建新目录。
请参阅 https://free.blessedness.top/rest/api/storageservices/create-directory
function create(options?: DirectoryCreateOptions): Promise<DirectoryCreateResponse>
参数
- options
- DirectoryCreateOptions
目录创建作的选项。
返回
Promise<DirectoryCreateResponse>
目录作的响应数据。
createFile(string, number, FileCreateOptions)
创建新文件或替换此目录下的文件。 请注意,它仅初始化没有内容的文件。
请参阅 https://free.blessedness.top/rest/api/storageservices/create-file
function createFile(fileName: string, size: number, options?: FileCreateOptions): Promise<{ fileClient: ShareFileClient, fileCreateResponse: FileCreateResponse }>
参数
- fileName
-
string
- size
-
number
指定文件的最大大小(以字节为单位),最大为 4 TB。
- options
- FileCreateOptions
文件创建作的选项。
返回
Promise<{ fileClient: ShareFileClient, fileCreateResponse: FileCreateResponse }>
文件创建响应数据和相应的文件客户端。
createIfNotExists(DirectoryCreateOptions)
如果指定的共享或父目录尚不存在,则创建一个新目录。 如果目录已存在,则不会对其进行修改。
请参阅 https://free.blessedness.top/rest/api/storageservices/create-directory
function createIfNotExists(options?: DirectoryCreateOptions): Promise<DirectoryCreateIfNotExistsResponse>
参数
- options
- DirectoryCreateOptions
返回
Promise<DirectoryCreateIfNotExistsResponse>
createSubdirectory(string, DirectoryCreateOptions)
在此目录下创建新的子目录。
请参阅 https://free.blessedness.top/rest/api/storageservices/create-directory
function createSubdirectory(directoryName: string, options?: DirectoryCreateOptions): Promise<{ directoryClient: ShareDirectoryClient, directoryCreateResponse: DirectoryCreateResponse }>
参数
- directoryName
-
string
- options
- DirectoryCreateOptions
目录创建作的选项。
返回
Promise<{ directoryClient: ShareDirectoryClient, directoryCreateResponse: DirectoryCreateResponse }>
目录创建响应数据和相应的 DirectoryClient 实例。
delete(DirectoryDeleteOptions)
删除指定的空目录。 请注意,目录必须为空,然后才能将其删除。
请参阅 https://free.blessedness.top/rest/api/storageservices/delete-directory
function delete(options?: DirectoryDeleteOptions): Promise<DirectoryDeleteResponse>
参数
- options
- DirectoryDeleteOptions
目录删除作的选项。
返回
Promise<DirectoryDeleteResponse>
目录删除作的响应数据。
deleteFile(string, FileDeleteOptions)
从存储帐户中删除此目录下的指定文件。 成功删除文件时,会立即从存储帐户的索引中删除该文件,并且客户端不再可访问该文件。 在垃圾回收期间,文件的数据稍后会从服务中删除。
如果文件在 SMB 客户端上打开,则删除文件将失败,状态代码为 409(冲突)和错误代码 SharingViolation。
共享快照不支持删除文件,这是共享的只读副本。 尝试对共享快照执行此作将失败,但 400 (InvalidQueryParameterValue)
请参阅 https://free.blessedness.top/rest/api/storageservices/delete-file2
function deleteFile(fileName: string, options?: FileDeleteOptions): Promise<FileDeleteResponse>
参数
- fileName
-
string
要删除的文件的名称
- options
- FileDeleteOptions
文件删除作的选项。
返回
Promise<FileDeleteResponse>
文件删除响应数据。
deleteIfExists(DirectoryDeleteOptions)
删除指定的空目录(如果存在)。 请注意,目录必须为空,然后才能将其删除。
请参阅 https://free.blessedness.top/rest/api/storageservices/delete-directory
function deleteIfExists(options?: DirectoryDeleteOptions): Promise<DirectoryDeleteIfExistsResponse>
参数
- options
- DirectoryDeleteOptions
返回
Promise<DirectoryDeleteIfExistsResponse>
deleteSubdirectory(string, DirectoryDeleteOptions)
删除此目录下的指定空子目录。 请注意,目录必须为空,然后才能将其删除。
请参阅 https://free.blessedness.top/rest/api/storageservices/delete-directory
function deleteSubdirectory(directoryName: string, options?: DirectoryDeleteOptions): Promise<DirectoryDeleteResponse>
参数
- directoryName
-
string
- options
- DirectoryDeleteOptions
目录删除作的选项。
返回
Promise<DirectoryDeleteResponse>
目录删除响应数据。
exists(DirectoryExistsOptions)
如果指定的目录存在,则返回 true;否则为 false。
注意:请谨慎使用此函数,因为现有目录可能被其他客户端或应用程序删除。 反之亦然,此函数完成后,其他客户端或应用程序可能会添加新目录。
function exists(options?: DirectoryExistsOptions): Promise<boolean>
参数
- options
- DirectoryExistsOptions
“存在”作的选项。
返回
Promise<boolean>
forceCloseAllHandles(DirectoryForceCloseHandlesSegmentOptions)
强制关闭目录的所有句柄。
请参阅 https://free.blessedness.top/rest/api/storageservices/force-close-handles
function forceCloseAllHandles(options?: DirectoryForceCloseHandlesSegmentOptions): Promise<CloseHandlesInfo>
参数
返回
Promise<CloseHandlesInfo>
forceCloseHandle(string, DirectoryForceCloseHandlesOptions)
强制关闭目录的特定句柄。
请参阅 https://free.blessedness.top/rest/api/storageservices/force-close-handles
function forceCloseHandle(handleId: string, options?: DirectoryForceCloseHandlesOptions): Promise<DirectoryForceCloseHandlesResponse>
参数
- handleId
-
string
特定句柄 ID,不能为星号“*”。 使用 forceCloseHandlesSegment() 关闭所有句柄。
返回
Promise<DirectoryForceCloseHandlesResponse>
getDirectoryClient(string)
为子目录创建 ShareDirectoryClient 对象。
function getDirectoryClient(subDirectoryName: string): ShareDirectoryClient
参数
- subDirectoryName
-
string
子目录名称
返回
给定子目录名称的 ShareDirectoryClient 对象。
示例用法:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const shareClient = serviceClient.getShareClient(shareName);
const directoryClient = shareClient.getDirectoryClient(directoryName);
await directoryClient.create();
getFileClient(string)
创建 ShareFileClient 对象。
function getFileClient(fileName: string): ShareFileClient
参数
- fileName
-
string
文件名。
返回
给定文件名的新 ShareFileClient 对象。
示例用法:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
const content = "Hello World!";
const fileName = `newdirectory${+new Date()}`;
const fileClient = directoryClient.getFileClient(fileName);
await fileClient.create(content.length);
console.log(`Create file ${fileName} successfully`);
// Upload file range
await fileClient.uploadRange(content, 0, content.length);
console.log(`Upload file range "${content}" to ${fileName} successfully`);
getProperties(DirectoryGetPropertiesOptions)
返回指定目录的所有系统属性,还可用于检查目录是否存在。 返回的数据不包括目录或任何子目录中的文件。
请参阅 https://free.blessedness.top/rest/api/storageservices/get-directory-properties
function getProperties(options?: DirectoryGetPropertiesOptions): Promise<DirectoryGetPropertiesResponse>
参数
- options
- DirectoryGetPropertiesOptions
目录获取属性作的选项。
返回
Promise<DirectoryGetPropertiesResponse>
目录获取属性作的响应数据。
listFilesAndDirectories(DirectoryListFilesAndDirectoriesOptions)
返回异步可迭代迭代器以列出指定帐户下的所有文件和目录。
.byPage() 返回异步可迭代迭代器以列出页面中的文件和目录。
使用 for await 语法的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let i = 1;
for await (const item of directoryClient.listFilesAndDirectories()) {
if (item.kind === "directory") {
console.log(`${i} - directory\t: ${item.name}`);
} else {
console.log(`${i} - file\t: ${item.name}`);
}
i++;
}
使用 iter.next()的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let i = 1;
const iter = directoryClient.listFilesAndDirectories();
let { value, done } = await iter.next();
while (!done) {
if (value.kind === "directory") {
console.log(`${i} - directory\t: ${value.name}`);
} else {
console.log(`${i} - file\t: ${value.name}`);
}
({ value, done } = await iter.next());
i++;
}
使用 byPage()的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let i = 1;
for await (const response of directoryClient
.listFilesAndDirectories()
.byPage({ maxPageSize: 20 })) {
console.log(`Page ${i++}:`);
for (const item of response.segment.directoryItems) {
console.log(`\tdirectory: ${item.name}`);
}
for (const item of response.segment.fileItems) {
console.log(`\tfile: ${item.name}`);
}
}
对标记使用分页的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let iterator = directoryClient.listFilesAndDirectories().byPage({ maxPageSize: 2 });
let response = (await iterator.next()).value;
for await (const item of response.segment.directoryItems) {
console.log(`\tdirectory: ${item.name}`);
}
for await (const item of response.segment.fileItems) {
console.log(`\tfile: ${item.name}`);
}
// Gets next marker
let marker = response.continuationToken;
// Passing next marker as continuationToken
iterator = directoryClient
.listFilesAndDirectories()
.byPage({ continuationToken: marker, maxPageSize: 10 });
response = (await iterator.next()).value;
for await (const item of response.segment.directoryItems) {
console.log(`\tdirectory: ${item.name}`);
}
for await (const item of response.segment.fileItems) {
console.log(`\tfile: ${item.name}`);
}
function listFilesAndDirectories(options?: DirectoryListFilesAndDirectoriesOptions): PagedAsyncIterableIterator<({ kind: "file" } & FileItem) | ({ kind: "directory" } & DirectoryItem), DirectoryListFilesAndDirectoriesSegmentResponse, PageSettings>
参数
列出文件和目录作的选项。
返回
PagedAsyncIterableIterator<({ kind: "file" } & FileItem) | ({ kind: "directory" } & DirectoryItem), DirectoryListFilesAndDirectoriesSegmentResponse, PageSettings>
支持分页的 asyncIterableIterator。
listHandles(DirectoryListHandlesOptions)
返回异步可迭代迭代器以列出所有句柄。 在指定的帐户下。
.byPage() 返回异步可迭代迭代器以列出页面中的句柄。
使用 for await 语法的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
for await (const handle of directoryClient.listHandles()) {
console.log(`Handle: ${handle.handleId}`);
}
使用 iter.next()的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
const handleIter = directoryClient.listHandles();
let { value, done } = await handleIter.next();
while (!done) {
console.log(`Handle: ${value.handleId}`);
({ value, done } = await handleIter.next());
}
使用 byPage()的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let i = 1;
for await (const response of directoryClient.listHandles().byPage({ maxPageSize: 20 })) {
console.log(`Page ${i++}:`);
for (const handle of response.handleList || []) {
console.log(`\thandle: ${handle.handleId}`);
}
}
对标记使用分页的示例:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let iterator = directoryClient.listHandles().byPage({ maxPageSize: 2 });
let response = (await iterator.next()).value;
for await (const handle of response.handleList || []) {
console.log(`\thandle: ${handle.handleId}`);
}
// Gets next marker
let marker = response.continuationToken;
// Passing next marker as continuationToken
iterator = directoryClient.listHandles().byPage({ continuationToken: marker, maxPageSize: 10 });
response = (await iterator.next()).value;
for await (const handle of response.handleList || []) {
console.log(`\thandle: ${handle.handleId}`);
}
function listHandles(options?: DirectoryListHandlesOptions): PagedAsyncIterableIterator<HandleItem, DirectoryListHandlesResponse, PageSettings>
参数
返回
rename(string, DirectoryRenameOptions)
重命名目录。 此 API 仅支持重命名同一共享中的目录。
function rename(destinationPath: string, options?: DirectoryRenameOptions): Promise<{ destinationDirectoryClient: ShareDirectoryClient, directoryRenameResponse: DirectoryRenameResponse }>
参数
- destinationPath
-
string
指定要重命名的目标路径。 路径将编码为放入 URL 以指定目标。
- options
- DirectoryRenameOptions
重命名作的选项。
返回
Promise<{ destinationDirectoryClient: ShareDirectoryClient, directoryRenameResponse: DirectoryRenameResponse }>
文件重命名作的响应数据。
示例用法:
import { StorageSharedKeyCredential, ShareServiceClient } from "@azure/storage-file-share";
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential,
);
const shareName = "<share name>";
const directoryName = "<directory name>";
const destinationPath = "<destination path>";
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
await directoryClient.rename(destinationPath);
setMetadata(Metadata, DirectorySetMetadataOptions)
更新指定目录的用户定义元数据。
请参阅 https://free.blessedness.top/rest/api/storageservices/set-directory-metadata
function setMetadata(metadata?: Metadata, options?: DirectorySetMetadataOptions): Promise<DirectorySetMetadataResponse>
参数
- metadata
- Metadata
如果未提供任何元数据,将删除所有现有目录元数据
- options
- DirectorySetMetadataOptions
目录设置元数据作的选项。
返回
Promise<DirectorySetMetadataResponse>
目录集元数据作的响应数据。
setProperties(DirectoryProperties)
设置目录的属性。
请参阅 https://free.blessedness.top/rest/api/storageservices/set-directory-properties
function setProperties(properties?: DirectoryProperties): Promise<DirectorySetPropertiesResponse>
参数
- properties
- DirectoryProperties
返回
Promise<DirectorySetPropertiesResponse>