.NET SDK を使用した Data Lake Storage Gen1 に対するファイルシステム操作

この記事では、.NET SDK を使用して Data Lake Storage Gen1 に対するファイルシステム操作を実行する方法について説明します。 ファイルシステム操作には、Data Lake Storage Gen1 アカウントでのフォルダーの作成、ファイルのアップロード、ファイルのダウンロードなどがあります。

.NET SDK を使用して Data Lake Storage Gen1 に対するアカウント管理操作を行う方法については、.NET SDK を使用した Data Lake Storage Gen1 に対するアカウント管理操作に関するページを参照してください。

前提条件

.NET アプリケーションの作成

GitHub で入手できるコード サンプルは、ストアでのファイルの作成、ファイルの連結、ファイルのダウンロード、ストアでのファイルの削除のプロセスを示しています。 このセクションでは、コードの主要部分について説明します。

  1. Visual Studio で、 [ファイル] メニュー、 [新規作成][プロジェクト] の順に選択します。

  2. [コンソール アプリ (.NET Framework)] を選択し、 [次へ] を選択します。

  3. [プロジェクト名]CreateADLApplication と入力して、 [作成] を選択します。

  4. NuGet パッケージをプロジェクトに追加します。

    1. ソリューション エクスプローラーでプロジェクト名を右クリックし、 [NuGet パッケージの管理] をクリックします。

    2. [NuGet パッケージ マネージャー] タブで、 [パッケージ ソース]nuget.org に設定されていることを確認します。また、 [プレリリースを含める] チェック ボックスがオンになっていることを確認します。

    3. 以下の NuGet パッケージを検索してインストールします。

      • Microsoft.Azure.DataLake.Store - この記事では、v1.0.0 を使用します。
      • Microsoft.Rest.ClientRuntime.Azure.Authentication - この記事では、v2.3.1 を使用します。

      NuGet パッケージ マネージャーを閉じます。

  5. Program.csを開き、既存のコードを削除し、次のステートメントに置き換えて、名前空間の参照を追加します。

    using System;
    using System.IO;using System.Threading;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;
    using System.Security.Cryptography.X509Certificates; // Required only if you're using an Azure AD application created with certificates
    
    using Microsoft.Rest;
    using Microsoft.Rest.Azure.Authentication;
    using Microsoft.Azure.DataLake.Store;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
  6. 以下に示すように変数を宣言し、プレースホルダーの値を指定します。 さらに、ここに指定したローカル パスとファイル名がコンピューターに存在していることを確認します。

    namespace SdkSample
    {
        class Program
        {
            private static string _adlsg1AccountName = "<DATA-LAKE-STORAGE-GEN1-NAME>.azuredatalakestore.net";
        }
    }
    

記事の以降のセクションでは、認証、ファイルのアップロードなどの操作を行う .NET メソッドの使用方法について説明します。

認証

クライアント オブジェクトを作成する

次のスニペットを使用して、サービスに要求を発行するために使用される Data Lake Storage Gen1 ファイルシステム クライアント オブジェクトを作成します。

// Create client objects
AdlsClient client = AdlsClient.CreateClient(_adlsg1AccountName, adlCreds);

ファイルとディレクトリを作成する

次のスニペットをアプリケーションに追加します。 このスニペットを使用して、ファイルと、存在しない親ディレクトリがあればそのディレクトリを追加します。

// Create a file - automatically creates any parent directories that don't exist
// The AdlsOutputStream preserves record boundaries - it does not break records while writing to the store

using (var stream = client.CreateFile(fileName, IfExists.Overwrite))
{
    byte[] textByteArray = Encoding.UTF8.GetBytes("This is test data to write.\r\n");
    stream.Write(textByteArray, 0, textByteArray.Length);

    textByteArray = Encoding.UTF8.GetBytes("This is the second line.\r\n");
    stream.Write(textByteArray, 0, textByteArray.Length);
}

ファイルに追加する

次のスニペットを使用して、Data Lake Storage Gen1 アカウントの既存のファイルにデータを追加します。

// Append to existing file

using (var stream = client.GetAppendStream(fileName))
{
    byte[] textByteArray = Encoding.UTF8.GetBytes("This is the added line.\r\n");
    stream.Write(textByteArray, 0, textByteArray.Length);
}

ファイルを読み取る

次のスニペットを使用して、Data Lake Storage Gen1 のファイルの内容を読み取ります。

//Read file contents

using (var readStream = new StreamReader(client.GetReadStream(fileName)))
{
    string line;
    while ((line = readStream.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

ファイルのプロパティを取得する

次のスニペットを使用して、ファイルまたはディレクトリに関連付けられているプロパティを返します。

// Get file properties
var directoryEntry = client.GetDirectoryEntry(fileName);
PrintDirectoryEntry(directoryEntry);

PrintDirectoryEntry メソッドの定義は、GitHub でサンプルの一部として入手できます。

ファイル名を変更する

次のスニペットを使用して、Data Lake Storage Gen1 アカウントの既存のファイルの名前を変更します。

// Rename a file
string destFilePath = "/Test/testRenameDest3.txt";
client.Rename(fileName, destFilePath, true);

ディレクトリを列挙する

次のスニペットを使用して、Data Lake Storage Gen1 アカウントのディレクトリを列挙します。

// Enumerate directory
foreach (var entry in client.EnumerateDirectory("/Test"))
{
    PrintDirectoryEntry(entry);
}

PrintDirectoryEntry メソッドの定義は、GitHub でサンプルの一部として入手できます。

ディレクトリを再帰的に削除する

次のスニペットを使用して、ディレクトリとそのすべてのサブディレクトリを再帰的に削除します。

// Delete a directory and all its subdirectories and files
client.DeleteRecursive("/Test");

サンプル

Data Lake Storage Gen1 ファイルシステム SDK の使用方法を示すいくつかのサンプルを次に示します。

関連項目

次のステップ