对象存储 - 读取文本文件时出错

时间:2016-12-28 22:13:06

标签: java ibm-cloud object-storage

当尝试读取文本文件的内容时,我收到错误消息" java.lang.ClassCastException:org.openstack4j.openstack.common.DLPayloadEntity与java.io.File"不兼容。

如何在不将文本写入新文件的情况下阅读文本文件?

我尝试使用Apache Commons / IO库' readFiletoString()'将文件直接转换为String。方法:

public String test() {
    ObjectStorageDAO os;
    List<String> containers = null;
    String str = null;
    try {
        os = new ObjectStorageDAO(auth_url, userId, password, project, domainName);
        // List the containers
        containers = os.containers();
        SwiftObject so = os.getObject("MyContainer", "message.txt");
        File file = (File) so.download();
        str = FileUtils.readFileToString(file, "UTF-8");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        str = e.toString();
    }
    return str;

}

1 个答案:

答案 0 :(得分:2)

简而言之,您正在获得类强制转换异常,因为您尝试将一种数据类型的对象(即DLPayloadEntity)转换为另一种(即文件)。

    SwiftObject so = os.getObject("MyContainer", "message.txt");
    DLPayloadEntity payload = so.download();

使用“payload”对象,您可以按照以下方式检索响应;

  • getHttpResponse()
  • 的getInputStream()
  • writeToFile(文件文件)

您可以执行以下操作来检索文本;

InputStream stream = payload.getInputStream();

“stream”对象允许您读取字节。