0

そのため、Java SDK ソリューションを使用して CloudFiles をローカル ホストにダウンロードしています

テスト コンテナーを見つけ、その内容を一覧表示し、ファイルにアクセス/書き込みすることができます。しかし、私がそれらを書くとき、元のファイルからのデータはまったくありません。それらはただの殻 (0KB) です。openStream()それらは大きなファイルではなく、メソッドを呼び出して作成するときに問題があるようですInputStream...それを呼び出すread()と、すぐに-1ファイルの終わりに達したことが示されます...理由がわかりません. 説明に役立つコードを次に示します。

ObjectList object = objectApi.list();
    for (int x = 0; x < testContainer.getObjectCount(); x++){
        SwiftObject object2 = object.get(x);

        InputStream inputStream = object2.getPayload().openStream();
        System.out.println(inputStream.read()); <-- giving me -1
        System.out.println(inputStream.available()); <-- giving me 0
        String objectName = object2.getName();
        System.out.println(objectName);
}

これは単なるエラーチェックです。すべてが私のTestContainerで動作するようです...作成したときに、すべてのフォルダー/ファイルが表示されます。

Payload pl = object2.getPayload();

System.out.println(pl.getMetaData());

contentLength がファイルのサイズと一致する(ほとんど一致する)ことを示しています...だから、私のSwiftObjectはobject.get(x)....でうまく構築されていると思います

を呼び出したときにゼロバイトを返すread()理由がわかりません....openStreamが機能していないようです...どんな助けも大歓迎です!!

そして、それが何らかの形で私の他のコードの問題である場合に備えて、これは次のとおりです。

InputStream inputStream = object2.getPayload().openStream();
        String objectName = object2.getName();
        System.out.println(objectName);
        if (objectName.contains(".")){
            File newFile = new File("C:\\Users\\-----\\temp\\" + objectName);
            newFile.getParentFile().mkdirs();
            FileOutputStream outputStream = new FileOutputStream(newFile);
            byte[] aByte = IOUtils.toByteArray(inputStream);
            IOUtils.write(aByte, outputStream); //also tried IOUtils.copy(inputStream, outputStream);
            inputStream.close();
            outputStream.close();
        }
4

1 に答える 1