有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我在写入检索到的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

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


共 (1) 个答案

  1. # 1 楼答案

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

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

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

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