如何使用JOSS在OpenStack容器上写文件

时间:2015-07-14 07:15:41

标签: java openstack openstack-swift

我需要帮助,因为我需要在现有代码中集成JOSS。我的代码使用Java 8的Consumer功能。

Consumer<? super GHRepository> action = repo -> {
            try {
                if(github.getRateLimit().remaining > 0) {
                    Files.write(this.path, (repo.toString() + "\n").getBytes(), StandardOpenOption.APPEND);
                    totalIteration++;
                } else {
                    logger.info("Time to pause for " + (github.getRateLimit().reset.getTime() -  new Date().getTime()));
                    //wait until rate limit is ok.
                    do {
                        Thread.sleep(60000);
                    } while(github.getRateLimit().reset.after(new Date()));

                }
            } catch (Exception e) {
                logger.error("Erreur d'écriture dans le fichier : " + e.getMessage());
            }
        };

此代码工作正常,但机器上可用的磁盘空间不足。所以我需要直接在OpenStack容器上编写文件。

我在文档中读到JOSS使用此功能上传文件。

   StoredObject object = container.getObject("dog.png");
   object.uploadObject(new File("/dog.png"));

这是上传已写入文件的方法。但我需要直接在容器上写入文件。 uploadObject函数可以在参数中接收InputStream。所以我想用它。但我不知道如何将其与现有代码集成。你能救我吗?

1 个答案:

答案 0 :(得分:0)

好的,我找到了方法。

object.uploadObject(Files.newInputStream(Files.write(this.path, (repo.toString() + "\n").getBytes(), StandardOpenOption.APPEND)));