有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获取具有父DataLakeDirectoryClient类实例的子文件/目录列表

我必须扫描整个数据湖文件系统。代码如下:

PagedIterable<PathItem> pItems = ((DataLakeFileSystemClient)prmParent).listPaths();
for( PathItem pItem : pItems ){
  if pItem.isDirectory() ){
    ((DataLakeFileSystemClient)prmParent).getDirectoryClient(pItem.getName());
  } else {
    ((DataLakeFileSystemClient)prmParent).getFileClient(pItem.getName());
  }
}

我有顶级目录/文件。但要深入研究,DataLakeDirectoryClient类中必须有方法listChild()。 但我没有发现任何类似的情况。 有人知道穿过这棵树的正确方法吗

谢谢。塞吉伊


共 (1) 个答案

  1. # 1 楼答案

    如果您想列出Azure data lake gen2文件系统中的所有路径,请参考以下代码

     StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
            String endpoint = String.format(Locale.ROOT, "https://%s.dfs.core.windows.net", accountName);
            DataLakeServiceClient storageClient = new DataLakeServiceClientBuilder()
                    .endpoint(endpoint)
                    .credential(credential)
                    .buildClient();
    
            DataLakeFileSystemClient dataLakeFileSystemClient = storageClient.getFileSystemClient("test");
            ListPathsOptions options = new ListPathsOptions();
            options.setRecursive(true);
            PagedIterable<PathItem> pItems = dataLakeFileSystemClient.listPaths(options,null);
    
            for( PathItem pItem : pItems ){
                if(pItem.isDirectory()) {
                    System.out.println("The directory: " +pItem.getName());
                }else{
                    System.out.println("The file : " +pItem.getName());
                }
            }
    

    enter image description here

    有关更多详细信息,请参阅here