App Engine / Google Cloud存储输入流错误

时间:2015-01-13 12:01:14

标签: java google-app-engine google-cloud-storage

我在编写检索到的ObjectInputStream对象的字节时遇到问题。我需要这个能够以格式访问该文件。

这是我目前使用的代码:

public ObjectInputStream serve(String fileName) throws IOException,
        ClassNotFoundException {

    GcsFilename gcsFileName = getFileName(fileName, defaultbucketName);

    int fileSize = (int) gcsService.getMetadata(gcsFileName).getLength();
    GcsInputChannel readChannel = null;

    readChannel = gcsService.openPrefetchingReadChannel(gcsFileName, 0,
            fileSize);

    try (ObjectInputStream oin = new ObjectInputStream(
            Channels.newInputStream(readChannel))) {
        return oin;
    }


}

当我运行代码时,它在ObjectInputStream oin = new ObjectInputStream(Channels.newInputStream(readChannel))行失败并出现错误,例如:

java.io.StreamCorruptedException: invalid stream header: FFD8FFE0

但是当我将流发送到HTTPRESPONSE对象时没有问题。

1 个答案:

答案 0 :(得分:2)

您可能正在尝试访问尚未由ObjectOutputStream撰写的文件,该文件包含特殊标题。

因此,要访问该文件,您应该使用Google云端存储编写API或像这样的虚拟Java程序重写其内容:

FileOutputStream fos = new FileOutputStream("test.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject("your content");
oos.close();

稍后,将test.txt上传到您的GCS广告管理系统。