【问题标题】:How to write CSV file on azure file storage account using java?如何使用 java 在 azure 文件存储帐户上写入 CSV 文件?
【发布时间】:2017-10-31 14:18:42
【问题描述】:

我们将 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);

类似的东西。

所以我的问题是 azure api for java 中 csv 文件写入器的替换是什么。

【问题讨论】:

  • 你需要告诉更多。请告诉我们您正在构建什么样的应用程序,它在哪里运行(Azure VM/WebApp 等),以及到目前为止您尝试了什么。就目前而言,没有太多细节可供我们正确回答。

标签: java azure


【解决方案1】:

根据我的经验,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());

希望对你有帮助。

【讨论】:

  • 感谢 Jay Gong 的快速回复。但我们的要求是直接创建 csv 文件到 azure 文件存储。实际上这个想法是不使用本地文件系统。
  • @ShashiShekhar 那么,也许你可以考虑使用我在回答中提到的流方法将数据上传到 Azure 文件存储
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2016-05-24
  • 1970-01-01
  • 2021-11-08
  • 2022-12-21
  • 2022-10-13
相关资源
最近更新 更多