Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序引擎/Google云存储输入流错误_Java_Google App Engine_Google Cloud Storage - Fatal编程技术网

Java 应用程序引擎/Google云存储输入流错误

Java 应用程序引擎/Google云存储输入流错误,java,google-app-engine,google-cloud-storage,Java,Google App Engine,Google Cloud Storage,我在写入检索到的ObjectInputStream对象的字节时遇到问题。我需要这个,以便能够访问该格式的文件 这是我当前使用的代码: public ObjectInputStream serve(String fileName) throws IOException, ClassNotFoundException { GcsFilename gcsFileName = getFileName(fileName, defaultbucketName); int

我在写入检索到的
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=newobjectinputstream(Channels.newInputStream(readChannel))
行失败,并出现错误,例如:

java.io.StreamCorruptedException: invalid stream header: FFD8FFE0

但是,当我将流导出到
HTTPRESPONSE
对象时,没有问题。

您可能试图访问的文件不是由
ObjectOutputStream
写入的,该文件包含一个特殊的头

因此,要访问该文件,您应该使用Google Cloud Storage编写API或类似以下的虚拟Java程序重写其内容:

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

稍后,将
test.txt
上载到您的GCS存储桶。

ObjectInputStream.readObject()
返回一个
对象。您的方法返回一个
ObjectInputStream
。因此,此代码不会编译!另外。。。是否确实可以将输入流视为
ObjectInputStream
?我的意思是,您是否在发送站点上使用了
ObjectOutputStream
来序列化对象?这是一个输入错误,不应该返回对象。我应该马上回来。但是代码在ObjectInputStream oin=newObjectInputStream(Channels.newInputStream(readChannel))时仍然失败