如何使用java在Azure文件存储帐户上写入CSV文件?

时间:2017-10-30 12:41:58

标签: java azure

我们在系统上创建CSV文件到指定路径的方式就像在一个驱动器和一些文件夹路径中一样,我们在创建FileWriter对象时使用FileWriter指定filePath。类似我们如何使用java在Azure文件存储中创建CSV文件?

我正在使用spring mvc hibernate应用程序,我需要从SQL服务器读取数据并将该数据写入csv文件并将该文件放到某个位置。 那段代码已经存在。但我现在需要将此数据写入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();

现在而不是writer.flush()我想做像

这样的事情
CloudFileDirectory sampleDir = rootDir.getDirectoryReference(path); 

cloudFile = sampleDir.getFileReference("csvfile.csv");
cloudFile.write(csvfile);
像这样的东西。

所以我的问题是用java替换azure api中的csv文件编写器。

1 个答案:

答案 0 :(得分: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);

此外,您可以使用upload方法直接将stream上传到Azure文件存储。

代码片段:

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

希望它对你有所帮助。