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

Object Storage - Error when reading text file

在尝试读取文本文件的内容时收到错误消息 "java.lang.ClassCastException: org.openstack4j.openstack.common.DLPayloadEntity incompatible with java.io.File"。

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

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

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;

}

简而言之,您会遇到 class 强制转换异常,因为您试图将一种数据类型(即 DLPayloadEntity)的对象强制转换为另一种数据类型(即文件)。

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

使用 "payload" 对象,您可以通过以下方式检索响应;

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

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

InputStream stream = payload.getInputStream();

"stream" 对象允许您读取字节。