Share via


Azure Dosyalar kullanan Java uygulamaları geliştirme

Verileri depolamak için Azure Dosyalar kullanan Java uygulamaları geliştirmenin temellerini öğrenin. Konsol uygulaması oluşturma ve Azure Dosyalar API'leri kullanarak temel eylemleri öğrenme:

  • Azure dosya paylaşımlarını oluşturma ve silme
  • Dizin oluşturma ve silme
  • Azure dosya paylaşımındaki dosyaları ve dizinleri listeleme
  • Dosyayı karşıya yükleme, indirme ve silme

İpucu

Azure Depolama kod örnekleri havuzuna göz atın

İndirip çalıştırabileceğiniz kullanımı kolay uçtan uca Azure Depolama kod örnekleri lütfen Azure Depolama Örnekleri listemize bakın.

Şunlara uygulanır

Dosya paylaşımı türü SMB NFS
Standart dosya paylaşımları (GPv2), LRS/ZRS Yes Hayır
Standart dosya paylaşımları (GPv2), GRS/GZRS Yes Hayır
Premium dosya paylaşımları (filestorage), LRS/ZRS Yes Hayır

Java uygulaması oluşturma

Örnekleri derlemek için Java Geliştirme Seti (JDK) ve Java için Azure Depolama SDK'sı gerekir. Ayrıca bir Azure depolama hesabına da ihtiyacınız olacaktır.

Uygulamanızı Azure Dosyalar kullanacak şekilde ayarlama

Azure Dosyalar API'lerini kullanmak için, Azure Dosyalar erişmek istediğiniz Java dosyasının en üstüne aşağıdaki kodu ekleyin.

// Include the following imports to use Azure Files APIs
import com.azure.storage.file.share.*;

Azure depolama bağlantı dizesi ayarlama

Azure Dosyalar kullanmak için Azure depolama hesabınıza bağlanmanız gerekir. Bir bağlantı dizesi yapılandırın ve depolama hesabınıza bağlanmak için kullanın. bağlantı dizesi tutmak için statik bir değişken tanımlayın.

storage_account_name> ve <storage_account_key> değerini depolama hesabınızın gerçek değerleriyle değiştirin.<

// Define the connection-string.
// Replace the values, including <>, with
// the values from your storage account.
public static final String connectStr = 
   "DefaultEndpointsProtocol=https;" +
   "AccountName=<storage_account_name>;" +
   "AccountKey=<storage_account_key>";

Azure dosya paylaşımına erişme

Azure Dosyalar erişmek için bir ShareClient nesnesi oluşturun. Yeni bir ShareClient nesnesi oluşturmak için ShareClientBuilder sınıfını kullanın.

ShareClient shareClient = new ShareClientBuilder()
    .connectionString(connectStr).shareName(shareName)
    .buildClient();

Dosya paylaşımı oluşturma

Azure Dosyalar içindeki tüm dosyalar ve dizinler, paylaşım adı verilen bir kapsayıcıda depolanır.

ShareClient.create yöntemi, paylaşım zaten varsa bir özel durum oluşturur. Oluşturmak için çağrıyı bir try/catch blok içine yerleştirin ve özel durumu işleyin.

public static Boolean createFileShare(String connectStr, String shareName)
{
    try
    {
        ShareClient shareClient = new ShareClientBuilder()
            .connectionString(connectStr).shareName(shareName)
            .buildClient();

        shareClient.create();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("createFileShare exception: " + e.getMessage());
        return false;
    }
}

Dosya paylaşımını silme

Aşağıdaki örnek kod bir dosya paylaşımını siler.

ShareClient.delete yöntemini çağırarak bir paylaşımı silin .

public static Boolean deleteFileShare(String connectStr, String shareName)
{
    try
    {
        ShareClient shareClient = new ShareClientBuilder()
            .connectionString(connectStr).shareName(shareName)
            .buildClient();

        shareClient.delete();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("deleteFileShare exception: " + e.getMessage());
        return false;
    }
}

Dizin oluşturma

Dosyaları kök dizine yerleştirmek yerine alt dizinlere yerleştirerek depolamayı düzenleyin.

Aşağıdaki kod, ShareDirectoryClient.create çağrısı yaparak bir dizin oluşturur. Örnek yöntem, dizini başarıyla oluşturup oluşturmadığını belirten bir Boolean değer döndürür.

public static Boolean createDirectory(String connectStr, String shareName,
                                        String dirName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        dirClient.create();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("createDirectory exception: " + e.getMessage());
        return false;
    }
}

Bir dizini silme

Bir dizini silmek basit bir görevdir. Hala dosya veya alt dizin içeren bir dizini silemezsiniz.

ShareDirectoryClient.delete yöntemi, dizin yoksa veya boş değilse bir özel durum oluşturur. Silme çağrısını bir try/catch blok içine yerleştirin ve özel durumu işleyin.

public static Boolean deleteDirectory(String connectStr, String shareName,
                                        String dirName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        dirClient.delete();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("deleteDirectory exception: " + e.getMessage());
        return false;
    }
}

Azure dosya paylaşımındaki dosyaları ve dizinleri listeleme

ShareDirectoryClient.listFilesAndDirectories öğesini çağırarak dosya ve dizinlerin listesini alın. yöntemi, yineleme yapabileceğiniz ShareFileItem nesnelerinin listesini döndürür. Aşağıdaki kod, dirName parametresi tarafından belirtilen dizin içindeki dosyaları ve dizinleri listeler.

public static Boolean enumerateFilesAndDirs(String connectStr, String shareName,
                                                String dirName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        dirClient.listFilesAndDirectories().forEach(
            fileRef -> System.out.printf("Resource: %s\t Directory? %b\n",
            fileRef.getName(), fileRef.isDirectory())
        );

        return true;
    }
    catch (Exception e)
    {
        System.out.println("enumerateFilesAndDirs exception: " + e.getMessage());
        return false;
    }
}

Dosyayı karşıya yükleme

Yerel depolama alanından dosya yüklemeyi öğrenin.

Aşağıdaki kod, ShareFileClient.uploadFromFile yöntemini çağırarak yerel bir dosyayı Azure Dosyalar yükler. Aşağıdaki örnek yöntem, belirtilen dosyayı başarıyla karşıya yükleyip yüklemediğini belirten bir Boolean değer döndürür.

public static Boolean uploadFile(String connectStr, String shareName,
                                    String dirName, String fileName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        ShareFileClient fileClient = dirClient.getFileClient(fileName);
        fileClient.create(1024);
        fileClient.uploadFromFile(fileName);
        return true;
    }
    catch (Exception e)
    {
        System.out.println("uploadFile exception: " + e.getMessage());
        return false;
    }
}

Dosya indirme

Daha sık yapılan işlemlerden biri, azure dosya paylaşımından dosya indirmektir.

Aşağıdaki örnek, belirtilen dosyayı destDir parametresinde belirtilen yerel dizine indirir. Örnek yöntem, indirilen dosya adını tarih ve saat önceden ekleyerek benzersiz hale getirir.

public static Boolean downloadFile(String connectStr, String shareName,
                                    String dirName, String destDir,
                                        String fileName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        ShareFileClient fileClient = dirClient.getFileClient(fileName);

        // Create a unique file name
        String date = new java.text.SimpleDateFormat("yyyyMMdd-HHmmss").format(new java.util.Date());
        String destPath = destDir + "/"+ date + "_" + fileName;

        fileClient.downloadToFile(destPath);
        return true;
    }
    catch (Exception e)
    {
        System.out.println("downloadFile exception: " + e.getMessage());
        return false;
    }
}

Dosya silme

Bir diğer yaygın Azure Dosyalar işlemi de dosya silme işlemidir.

Aşağıdaki kod belirtilen dosyayı siler. İlk olarak, örnek dirName parametresini temel alan bir ShareDirectoryClient oluşturur. Ardından kod, fileName parametresini temel alarak dizin istemcisinden bir ShareFileClient alır. Son olarak, örnek yöntem dosyayı silmek için ShareFileClient.delete dosyasını çağırır.

public static Boolean deleteFile(String connectStr, String shareName,
                                    String dirName, String fileName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        ShareFileClient fileClient = dirClient.getFileClient(fileName);
        fileClient.delete();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("deleteFile exception: " + e.getMessage());
        return false;
    }
}

Sonraki adımlar

Diğer Azure depolama API'leri hakkında daha fazla bilgi edinmek istiyorsanız bu bağlantıları izleyin.

Kullanım dışı bırakılan Java sürüm 8 SDK'larını kullanan ilgili kod örnekleri için bkz . Java sürüm 8'i kullanan kod örnekleri.