2017-05-10 16 views
1

私はローカルストレージ(PCから)のフォルダをazureの任意の共有の下に作成されたディレクトリに保存するアプリケーションを作成しています。私は紺碧のストレージアカウントの 'ファイル'の下で働いています。ここでJavaサービスを通じてazureのディレクトリにファイルを追加するには?

は私のコードです:

@Override 
    public String uploadDirectory(JSONObject jsonInput) throws IOException { 
     CloudFileClient fileClient = null; 
     try{ 
     fileClient = FileClientProvider.getFileClientReference(); 
     String directoryLocation = jsonInput.get("directoryLocation").toString(); 
     File f = new File(directoryLocation); 
     listFilesForFolder(f); 

     CloudFileShare share = fileClient.getShareReference(f.getName().toLowerCase().replace(".", "").replace("_", "")); 
     if (share.createIfNotExists()) { 
      System.out.println("New share created"); 
     } 
     CloudFileDirectory rootDir = share.getRootDirectoryReference(); 
     CloudFileDirectory sampleDir = rootDir.getDirectoryReference(f.getName().toLowerCase().replace(".", "").replace("_", "")); 
     if (sampleDir.createIfNotExists()) { 
      System.out.println("new directory created"); 
     } 
     for (ListFileItem fileItem : rootDir.listFilesAndDirectories()) { 
      System.out.println(fileItem.getUri()); 
     } 

     }catch(Exception e) 
     { 
      System.out.println("Exception "+e); 
     } 
     return "Check"; 
    } 

は、どのように私はすべてのフォルダ「F」を格納することができ、それがディレクトリに内容の「sampleDir」?

答えて

2

ローカルフォルダとその内容をアプリケーションのAzureファイルストレージにアップロードするには、次のサンプルコードを使用します。

@Override 
public String uploadDirectory(JSONObject jsonInput) throws IOException { 
    CloudFileClient fileClient = null; 
    try { 
     fileClient = FileClientProvider.getFileClientReference(); 
     String directoryLocation = jsonInput.get("directoryLocation").toString(); 
     File f = new File(directoryLocation); 

     CloudFileShare share = 
     fileClient.getShareReference(f.getName().toLowerCase().replace(".", "").replace("_", "")); 
     if (share.createIfNotExists()) { 
      System.out.println("New share created"); 
     } 
     CloudFileDirectory rootDir = share.getRootDirectoryReference(); 

     listFilesAndUploadToCloud(f.getAbsolutePath(), rootDir); 

    } catch(Exception e) { 
     System.out.println("Exception " + e); 
    } 
    return "Check"; 
} 

public void listFilesAndUploadToCloud(String filePath, CloudFileDirectory storageDir) throws Exception { 

    File f = new File(filePath); 
    ArrayList<File> files = new ArrayList<File>(Arrays.asList(f.listFiles())); 

    for (File file : files) { 
     if (file.isFile()) { 
      CloudFile cloudFile = storageDir.getFileReference(file.getName()); 
      cloudFile.uploadFromFile(file.getAbsolutePath()); 
     } else { 
      CloudFileDirectory cloudDir = storageDir.getDirectoryReference(file.getName()); 
      if (cloudDir.createIfNotExists()) { 
       listFilesAndUploadToCloud(file.getAbsolutePath(), cloudDir); 
      } 
     } 
    } 

} 
+0

ありがとう。良いロジックとうまく実装。 –

+0

こんにちは、この質問を見てください: https://stackoverflow.com/questions/44450473/how-to-download-file-having-spaces-in-its-name-from-azure-by-java-サービス –

関連する問題