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

Bu hızlı başlangıçta, Java kullanarak blobları yönetmeyi öğrenirsiniz. Bloblar; görüntüler, belgeler, akış medyası ve arşiv verileri gibi büyük miktarlarda metin veya ikili veri tutabilirsiniz. Blobları karşıya yükecek, indirecek ve listeledikten sonra kapsayıcıları oluştur ve silebilirsiniz.

Ek kaynaklar:

Önkoşullar

Ayarlama

Bu bölüm, Java için v12 istemci kitaplığını kullanarak Azure Blob Depolama proje hazırlamada size yol göstermektedir.

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 adıyla yeni bir konsol uygulaması oluşturun. "Merhaba dünya!" 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şturmanın çıktısı aşağıdakine benzer şekilde çalışmalı:

    [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. Switch to the newly created blob-quickstart-v12 folder.

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

    mkdir data
    

Paketi yükleme

Metin pom.xml dosyasını açın. Aşağıdaki bağımlılık öğesini bağımlılıklar 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üzenleyicide açın
  3. deyimini System.out.println("Hello world!"); silme
  4. Yönergeler import ekleme

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 istek yaptığında yetkilendirilmiş olması gerekir. 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 aşağıdaki adımları izleyin:

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

  2. Depolama hesabınızı bulun.

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

    Erişim anahtarı ayarlarının Azure portal nerede olduğunu gösteren ekran görüntüsü

  4. Erişim tuşları 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. Bir sonraki bölümde bağlantı dizesi değerini bir ortam değişkenine eklersiniz.

    Azure portalından bağlantı dizesinin kopyalanmasını gösteren ekran görüntüsü

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. <yourconnectionstring>Gerçek bağlantı dizeniz ile değiştirin.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

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

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Programları yeniden Başlat

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

Nesne modeli

Azure Blob Depolama, çok büyük miktarlarda yapılandırılmamış verilerin depolanması 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ı içinde bir kapsayıcı
  • Kapsayıcıda bir blob

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

Blob depolama mimarisi diyagramı

Bu kaynaklarla etkileşim kurmak için aşağıdaki Java sınıflarını kullanın:

  • BlobServiceClient: BlobServiceClient sınıfı, Azure kaynak ve blob Depolama işlemeye olanak sağlar. Depolama hesabı, Blob hizmeti için en üst düzey ad alanını sağlar.
  • BlobServiceClientBuilder:sınıfı, nesnelerin yapılandırmasına ve örneğini oluşturmaya yardımcı olmak için BlobServiceClientBuilder akıcı bir oluşturucu API'si BlobServiceClient sağlar.
  • BlobContainerClient: BlobContainerClient sınıfı, Azure kapsayıcılarını ve Depolama işlemeye olanak sağlar.
  • BlobClient: BlobClient sınıfı, Azure bloblarını ve blobları Depolama sağlar.
  • BlobItem:sınıfı BlobItem listBlobs ç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 Depolama nasıl gerçekleştirebilirsiniz:

Bağlantı dizesini alma

Aşağıdaki kod, Depolama bağlantı dizenizi yapılandırma bölümünde oluşturulan ortam değişkenini kullanarak depolama hesabının bağlantı dizesini alır.

Yöntemin içine şu kodu 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 seçin. 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 ve ardından depolama hesabınız içinde kapsayıcıyı oluşturmak için create yöntemini çağırın.

Bu kodu yönteminin sonuna Main 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);

Upload blobları kapsayıcıya depolama

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ıda getBlobClient yöntemini çağırarak bir BlobClient 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 yazmaz.

Bu kodu yönteminin sonuna Main 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ıda blobları listele. Bu durumda, kapsayıcıya yalnızca bir blob eklenmiştir, bu nedenle listeleme işlemi yalnızca bir blob döndürür.

Bu kodu yönteminin sonuna Main 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 önceden oluşturulmuş blobu indirin. Örnek kod, yerel dosya sisteminde her iki dosyayı da görmek için dosya adına "DOWNLOAD" soneki ekler.

Bu kodu yönteminin sonuna Main 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 blob, kapsayıcı ve yerel dosyaları smeden önce çağırarak System.console().readLine() kullanıcı girişi için duraklatılır. Bu, kaynakların silinmeden önce doğru şekilde oluşturulmuş olduğunu doğrulamak için iyi bir fırsattır.

Bu kodu yönteminin sonuna Main 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ıda blobları listeler ve eski ve yeni dosyaları karşılaştırarak dosyayı yeni bir adla indirir.

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

mvn compile

Ardından, paketini oluşturun.

mvn package

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

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

Uygulamanın çıktısı 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ı sona almak için ENTER tuşuna basın.

Sonraki adımlar

Bu hızlı başlangıçta, Java kullanarak Blobları karşıya yükleme, indirme ve listeleme hakkında daha fazla öğrendiniz.

BLOB depolama örnek uygulamalarını görmek için devam edin: