2017-10-30 19 views
1

私たちは、システム上の指定されたパスにCSVファイルを作成する方法は、1つのドライブとフォルダパスのように、FileWriterオブジェクトの作成中にfilePathを指定するFileWriterを使用します。 Similaryどのように私たちはAzureファイルストレージでJavaを使用してCSVファイルを作成できますか?javaを使用してazureファイルストレージアカウントにCSVファイルを書き込む方法は?

私はSQLサーバからデータを読み込み、そのデータをcsvファイルに書き込み、そのファイルを場所に配置する必要があるspring mvc hibernateアプリケーションに取り組んでいます。 そのコードはすでに存在しています。しかし、私はこのデータを紺碧のファイル保管場所に書き込む必要があります。これは、コード

String csvFile = "/Users/amar/csv/developer.csv"; 
    FileWriter writer = new FileWriter(csvFile); 

    List<Developer> developers = Arrays.asList(
      new Developer("amar", new BigDecimal(120500), 32), 
      new Developer("zilap", new BigDecimal(150099), 5), 
      new Developer("ultraman", new BigDecimal(99999), 99) 
    ); 

    //for header 
    CSVUtils.writeLine(writer, Arrays.asList("Name", "Salary", "Age")); 

    for (Developer d : developers) { 

     List<String> list = new ArrayList<>(); 
     list.add(d.getName()); 
     list.add(d.getSalary().toString()); 
     list.add(String.valueOf(d.getAge())); 

     CSVUtils.writeLine(writer, list); 

     //try custom separator and quote. 
     //CSVUtils.writeLine(writer, list, '|', '\"'); 
    } 

    writer.flush(); 
    writer.close(); 

代わりのwriter.flush()私はこのような何か

CloudFileDirectory sampleDir = rootDir.getDirectoryReference(path); 

cloudFile = sampleDir.getFileReference("csvfile.csv"); 
cloudFile.write(csvfile); 

のような何かをしたいですとしましょう。

私の質問は、Java用のazure apiのcsvファイルライターの置き換えです。

+0

もっと伝える必要があります。構築しているアプリケーション、実行中のアプリケーション(Azure VM/WebAppなど)、これまでに試したことは何ですか?今のところ、適切に答えられるような詳細はあまりありません。 –

答えて

0

Azure File storage SDKは、 file.write(file)と同様の方法を提供していません。

あなたのコードによれば、ローカルファイルを作成してデータを書き込んだようです。次に、uploadFromPathメソッドを使用してファイルをAzureファイルストレージにアップロードすることができます。以下のように

サンプルコード:

String csvFile = "/Users/amar/csv/developer.csv"; 
FileWriter writer = new FileWriter(csvFile); 

List<Developer> developers = Arrays.asList(
     new Developer("amar", new BigDecimal(120500), 32), 
     new Developer("zilap", new BigDecimal(150099), 5), 
     new Developer("ultraman", new BigDecimal(99999), 99) 
); 

//for header 
CSVUtils.writeLine(writer, Arrays.asList("Name", "Salary", "Age")); 

for (Developer d : developers) { 

    List<String> list = new ArrayList<>(); 
    list.add(d.getName()); 
    list.add(d.getSalary().toString()); 
    list.add(String.valueOf(d.getAge())); 

    CSVUtils.writeLine(writer, list); 

    //try custom separator and quote. 
    //CSVUtils.writeLine(writer, list, '|', '\"'); 
} 

writer.flush(); 
writer.close(); 

CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString); 

CloudFileClient fileClient = storageAccount.createCloudFileClient(); 

CloudFileShare share = fileClient.getShareReference("test"); 

CloudFileDirectory rootDir = share.getRootDirectoryReference();  

CloudFile file = rootDir.getFileReference("test.csv"); 

file.uploadFromPath(csvFile); 

また、あなたは直接Azureのファイルストレージへstreamをアップロードするuploadメソッドを使用することができます。

コードのスニペット:

file.upload(new StringBufferInputStream("aaa"),"aaa".length()); 

は、それはあなたのお役に立てば幸いです。

+0

迅速に対応してくれたJay Gongに感謝します。しかし、我々の要件は、アジールファイルストレージに直接CSVファイルを作成することです。実際には、ローカルファイルシステムを使用しないという考え方です。 –

+0

@ ShashiShekhar次に、Azureファイルストレージにデータをアップロードするための私の答えで述べたストリームメソッドの使用を検討できます –

関連する問題