Hızlı Başlangıç: Java v12 SDK ile blobları yönetme

Bu hızlı başlangıçta Java kullanarak blobları yönetmeyi öğreneceksiniz. Bloblar görüntüler, belgeler, akış medyası ve arşiv verileri dahil olmak üzere büyük miktarda metin veya ikili veri tutabilen nesnelerdir. Blobları karşıya yükleyecek, indirip listeleyecek ve kapsayıcı oluşturup sileceksiniz.

Ek kaynaklar:

Önkoşullar

Ayarlama

Bu bölümde, Java için Azure Blob Depolama istemci kitaplığı v12 ile çalışmak üzere bir proje hazırlama işleminde size yol gösterilir.

Proje oluşturma

blob-quickstart-v12 adlı bir Java uygulaması oluşturun.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi) maven kullanarak blob-quickstart-v12 adlı yeni bir konsol uygulaması oluşturun. "Hello world!" oluşturmak için aşağıdaki mvn komutunu yazın Java projesi.

    mvn archetype:generate `
        --define interactiveMode=n `
        --define groupId=com.blobs.quickstart `
        --define artifactId=blob-quickstart-v12 `
        --define archetypeArtifactId=maven-archetype-quickstart `
        --define archetypeVersion=1.4
    
  2. Projeyi oluşturma çıktısı şuna benzer olmalıdır:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< org.apache.maven:standalone-pom >-------------------
    [INFO] Building Maven Stub Project (No POM) 1
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    [INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
    [INFO]
    [INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
    [INFO]
    [INFO]
    [INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
    [INFO] Generating project in Batch mode
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: groupId, Value: com.blobs.quickstart
    [INFO] Parameter: artifactId, Value: blob-quickstart-v12
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.blobs.quickstart
    [INFO] Parameter: packageInPathFormat, Value: com/blobs/quickstart
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.blobs.quickstart
    [INFO] Parameter: groupId, Value: com.blobs.quickstart
    [INFO] Parameter: artifactId, Value: blob-quickstart-v12
    [INFO] Project created from Archetype in dir: C:\QuickStarts\blob-quickstart-v12
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  7.056 s
    [INFO] Finished at: 2019-10-23T11:09:21-07:00
    [INFO] ------------------------------------------------------------------------
        ```
    
    
  3. Yeni oluşturulan blob-quickstart-v12 klasörüne geçin.

    cd blob-quickstart-v12
    
  4. Blob-quickstart-v12 dizininde data adlı başka bir dizin oluşturun. Blob veri dosyalarının oluşturulacağı ve depolandığı yer burasıdır.

    mkdir data
    

Paketi yükleme

pom.xml dosyasını metin düzenleyicinizde açın. Aşağıdaki bağımlılık öğesini bağımlılık grubuna ekleyin.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.13.0</version>
</dependency>

Uygulama çerçevesini ayarlama

Proje dizininden:

  1. /src/main/java/com/blobs/quickstart dizinine gidin
  2. App.java dosyasını düzenleyicinizde açın
  3. deyimini System.out.println("Hello world!"); silme
  4. Yönerge ekleme import

Kod şu şekildedir:

package com.blobs.quickstart;

/**
 * Azure blob storage v12 SDK quickstart
 */
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.io.*;

public class App
{
    public static void main( String[] args ) throws IOException
    {
    }
}

Azure portalından kimlik bilgilerinizi kopyalama

Örnek uygulama Azure Depolama'a istekte bulunurken yetkilendirilmelidir. Bir isteği yetkilendirmek için depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin. Depolama hesabı kimlik bilgilerinizi görüntülemek için şu adımları izleyin:

  1. Azure Portal’ında oturum açın.

  2. Depolama hesabınızı bulun.

  3. Depolama hesabı menü bölmesindeki Güvenlik + ağ altında Erişim anahtarları'nı seçin. Burada hesap erişim anahtarlarını ve her anahtarın tam bağlantı dizesini görüntüleyebilirsiniz.

    Screenshot that shows where the access key settings are in the Azure portal

  4. Erişim anahtarları bölmesinde Anahtarları göster'i seçin.

  5. key1 bölümünde Bağlantı dizesi değerini bulun. Bağlantı dizesini kopyalamak için Panoya kopyala simgesini seçin. Sonraki bölümde bağlantı dizesi değerini bir ortam değişkenine ekleyeceksiniz.

    Screenshot showing how to copy a connection string from the Azure portal

Depolama bağlantı dizelerinizi yapılandırma

Bağlantı dizesini kopyaladıktan sonra uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın. Ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin yönergelerini izleyin. değerini gerçek bağlantı dizenizle değiştirin <yourconnectionstring> .

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

ortam değişkenini Windows ekledikten sonra komut penceresinin yeni bir örneğini başlatmanız gerekir.

Programları yeniden başlatma

Ortam değişkenini ekledikten sonra ortam değişkenini okuması gereken tüm çalışan programları yeniden başlatın. Örneğin, devam etmeden önce geliştirme ortamınızı veya düzenleyicinizi yeniden başlatın.

Nesne modeli

Azure Blob Depolama, çok büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanıma bağlı olmayan verilerdir. Blob depolama üç tür kaynak sunar:

  • Depolama hesabı
  • Depolama hesabındaki bir kapsayıcı
  • Kapsayıcıdaki bir blob

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.

Diagram of Blob storage architecture

Bu kaynaklarla etkileşime geçmek için aşağıdaki Java sınıflarını kullanın:

  • BlobServiceClient: sınıfı, BlobServiceClient Azure Depolama kaynaklarını ve blob kapsayıcılarını işlemenize olanak tanır. Depolama hesabı, Blob hizmeti için en üst düzey ad alanını sağlar.
  • BlobServiceClientBuilder: BlobServiceClientBuilder sınıfı, nesnelerin yapılandırılmasına ve örneğini oluşturmasına yardımcı olmak için fluent builder API'sini BlobServiceClient sağlar.
  • BlobContainerClient: sınıfı, BlobContainerClient Azure Depolama kapsayıcılarını ve bloblarını işlemenize olanak tanır.
  • BlobClient: sınıfı, BlobClient Azure Depolama bloblarını işlemenize olanak tanır.
  • BlobItem: sınıfı listBlobsBlobItem çağrısından döndürülen tek tek blobları temsil eder.

Kod örnekleri

Bu örnek kod parçacıkları, Java için Azure Blob Depolama istemci kitaplığıyla aşağıdakileri nasıl gerçekleştirebileceğinizi gösterir:

Bağlantı dizesini alma

Aşağıdaki kod Depolama hesabı için bağlantı dizesini Depolama bağlantı dizenizi yapılandırma bölümünde oluşturulan ortam değişkeninden alır.

Bu kodu yöntemine Main ekleyin:

System.out.println("Azure Blob Storage v12 - Java quickstart sample\n");

// Retrieve the connection string for use with the application. The storage
// connection string is stored in an environment variable on the machine
// running the application called AZURE_STORAGE_CONNECTION_STRING. If the environment variable
// is created after the application is launched in a console or with
// Visual Studio, the shell or application needs to be closed and reloaded
// to take the environment variable into account.
String connectStr = System.getenv("AZURE_STORAGE_CONNECTION_STRING");

Kapsayıcı oluşturma

Yeni kapsayıcı için bir ad belirleyin. Aşağıdaki kod, benzersiz olduğundan emin olmak için kapsayıcı adına bir UUID değeri ekler.

Önemli

Kapsayıcı adlarının küçük harfle yazılması gerekir. Kapsayıcıları ve blobları adlandırma hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Bunlara Başvurma.

Ardından BlobContainerClient sınıfının bir örneğini oluşturun, ardından depolama hesabınızda kapsayıcıyı oluşturmak için create yöntemini çağırın.

Bu kodu yönteminin Main sonuna ekleyin:

// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();

//Create a unique name for the container
String containerName = "quickstartblobs" + java.util.UUID.randomUUID();

// Create the container and return a container client object
BlobContainerClient containerClient = blobServiceClient.createBlobContainer(containerName);

Blobları kapsayıcıya Upload

Aşağıdaki kod parçacığı:

  1. Yerel veri dizininde bir metin dosyası oluşturur.
  2. Kapsayıcı oluşturma bölümünden kapsayıcıdaki getBlobClient yöntemini çağırarak birBlobClient nesnesine başvuru alır.
  3. uploadFromFile yöntemini çağırarak yerel metin dosyasını bloba yükler. Bu yöntem, henüz yoksa blobu oluşturur, ancak varsa üzerine yazılmaz.

Bu kodu yönteminin Main sonuna ekleyin:

// Create a local file in the ./data/ directory for uploading and downloading
String localPath = "./data/";
String fileName = "quickstart" + java.util.UUID.randomUUID() + ".txt";
File localFile = new File(localPath + fileName);

// Write text to the file
FileWriter writer = new FileWriter(localPath + fileName, true);
writer.write("Hello, World!");
writer.close();

// Get a reference to a blob
BlobClient blobClient = containerClient.getBlobClient(fileName);

System.out.println("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl());

// Upload the blob
blobClient.uploadFromFile(localPath + fileName);

Kapsayıcıdaki blobları listeleme

listBlobs yöntemini çağırarak kapsayıcıdaki blobları listeleyin. Bu durumda kapsayıcıya yalnızca bir blob eklendiğinden listeleme işlemi yalnızca bu blobu döndürür.

Bu kodu yönteminin Main sonuna ekleyin:

System.out.println("\nListing blobs...");

// List the blob(s) in the container.
for (BlobItem blobItem : containerClient.listBlobs()) {
    System.out.println("\t" + blobItem.getName());
}

Blob’ları indirme

downloadToFile yöntemini çağırarak daha önce oluşturulan blobu indirin. Örnek kod, her iki dosyayı da yerel dosya sisteminde görebilmeniz için dosya adına "İnDİr" soneki ekler.

Bu kodu yönteminin Main sonuna ekleyin:

// Download the blob to a local file
// Append the string "DOWNLOAD" before the .txt extension so that you can see both files.
String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
File downloadedFile = new File(localPath + downloadFileName);

System.out.println("\nDownloading blob to\n\t " + localPath + downloadFileName);

blobClient.downloadToFile(localPath + downloadFileName);

Kapsayıcı silme

Aşağıdaki kod , delete yöntemini kullanarak kapsayıcının tamamını kaldırarak uygulamanın oluşturduğu kaynakları temizler. Ayrıca uygulama tarafından oluşturulan yerel dosyaları da siler.

Uygulama blobu, kapsayıcıyı ve yerel dosyaları silmeden önce çağırarak System.console().readLine() kullanıcı girişi için duraklatılır. Bu, kaynakların silinmeden önce doğru oluşturulduğunu doğrulamak için iyi bir fırsattır.

Bu kodu yönteminin Main sonuna ekleyin:

// Clean up
System.out.println("\nPress the Enter key to begin clean up");
System.console().readLine();

System.out.println("Deleting blob container...");
containerClient.delete();

System.out.println("Deleting the local source and downloaded files...");
localFile.delete();
downloadedFile.delete();

System.out.println("Done");

Kodu çalıştırma

Bu uygulama yerel klasörünüzde bir test dosyası oluşturur ve blob depolamaya yükler. Örnek daha sonra kapsayıcıdaki blobları listeler ve eski ve yeni dosyaları karşılaştırabilmeniz için dosyayı yeni bir adla indirir.

pom.xml dosyasını içeren dizine gidin ve aşağıdaki mvn komutu kullanarak projeyi derleyin.

mvn compile

Ardından paketi derleyin.

mvn package

Uygulamayı yürütmek için aşağıdaki mvn komutu çalıştırın.

mvn exec:java -Dexec.mainClass="com.blobs.quickstart.App" -Dexec.cleanupDaemonThreads=false

Uygulamanın çıkışı aşağıdaki örneğe benzer:

Azure Blob Storage v12 - Java quickstart sample

Uploading to Blob storage as blob:
        https://mystorageacct.blob.core.windows.net/quickstartblobsf9aa68a5-260e-47e6-bea2-2dcfcfa1fd9a/quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65.txt

Listing blobs...
        quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65.txt

Downloading blob to
        ./data/quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65DOWNLOAD.txt

Press the Enter key to begin clean up

Deleting blob container...
Deleting the local source and downloaded files...
Done

Temizleme işlemine başlamadan önce iki dosya için veri klasörünüzü denetleyin. Dosyaları açarak aynı olduklarını görebilirsiniz.

Dosyaları doğruladıktan sonra Test dosyalarını silmek ve tanıtımı tamamlamak için Enter tuşuna basın.

Sonraki adımlar

Bu hızlı başlangıçta Java kullanarak blobları karşıya yüklemeyi, indirmeyi ve listelemeyi öğrendiniz.

Blob depolama örnek uygulamalarını görmek için şunları yapmaya devam edin: