FileWriteChannel(Google App Engine API for Java)

com.google.appengine.api.files

インターフェース FileWriteChannel

  • すべてのスーパーインターフェース:
    java.lang.AutoCloseable、java.nio.channels.Channel、java.io.Closeable、java.nio.channels.WritableByteChannel

    サポート終了。

    @Deprecated
    public interface FileWriteChannel
    extends java.nio.channels.WritableByteChannel
    AppEngineFile にバイトを追加するための WritableByteChannelWritableByteChannel で指定された動作に加えて、このクラスでは特定のタイプの障害から回復するために使用される sequence key 機能も公開されます。

    FileWriteChannel のインスタンスは、メソッド FileService.openWriteChannel(AppEngineFile, boolean) から取得されます。

    FileWriteChannel 単一の App Engine リクエストに関連付けられており、作成されたリクエストの外部では使用できません。したがって、FileWriteChannel のインスタンスはリクエスト間でキャッシュできません。代わりに、リクエストの終了時に(finalizing なしで)チャンネルを close し、AppEngineFile または path のみをキャッシュし、以降のリクエストで新しい FileWriteChannel を作成します。

    チャンネルが opened の場合、基盤のファイルをロックできます。他の App Engine リクエストを含まないロックの取得に成功すると、ロックが解除されるまで基盤のファイルの読み取りや書き込みが可能です。

    リクエストを終了する前に、close() メソッドのいずれかを呼び出す必要があります。バージョン closeFinally() によって、基盤となるファイルのファイナライズが発生します。ファイルがファイナライズされると、読み取りはできますが、書き込みはできなくなります。ファイルをファイナライズするには、ファイルのロックを保持する必要があります。リクエストを終了する前に close() メソッドが呼び出されない場合、Channel.close() が暗黙的に呼び出されるため、ファイルはファイナライズされません。すべての close() メソッドに、ロックが保持されている場合にロックが解除されるという副作用があります。WritableByteChannel と同様に、1 つのスレッドでチャンネルに対する書き込みオペレーションを開始する場合、最初のオペレーションが完了するまで、別の書き込みオペレーションを試行するその他のスレッドがブロックされます。

    • メソッドの概要

      すべてのメソッド インスタンス メソッド 抽象メソッド サポート終了メソッド 
      修飾子と型 メソッドと説明
      void closeFinally()
      サポート終了。 
      チャネルを閉じてファイルをファイナライズします。
      int write(java.nio.ByteBuffer src, java.lang.String sequenceKey)
      サポート終了。 
      WritableByteChannel.write(ByteBuffer)sequenceKey パラメータを追加することによって指定されます。
      • インターフェース java.nio.channels.WritableByteChannel から継承されたメソッド

        write
      • インターフェース java.nio.channels.Channel から継承されたメソッド

        close, isOpen
    • メソッドの詳細

      • write

        int write(java.nio.ByteBuffer src,
                  java.lang.String sequenceKey)
           throws java.io.IOException
        サポート終了。 
        WritableByteChannel.write(ByteBuffer)sequenceKey パラメータを追加することによって指定されます。このパラメータが null でない場合、バックエンドでの書き込みに成功した場合は、バックエンド リポジトリに渡され、最後の良好なシーケンス キーとして記録されます。この場合、sequenceKey が最後の良好なシーケンス キーよりも厳密かつ辞書的に小さく、バックエンドはすでに記録されている場合(存在している場合)、メソッド KeyOrderingException.getLastGoodSequenceKey() によって取得できる最後の良好なシーケンス キーから KeyOrderingException がスローされます。このフィードバック システムを利用することにより、回復することが困難な特定のタイプの障害から回復することができます。たとえば、一連の App Engine のタスクキューのタスクでバイトがファイルに書き込まれ、タスクの 1 つが再試行される場合、この手法を使用して同じバイトを 2 回書き込むことを回避できます。もう 1 つの例は、一連の書き込み中に、バックエンド システムの障害のためにバックエンドでファイルのバイトの一部を失う場合、このフィードバックシステムを使用して、データの破損が始まる前にクライアントに最後の書き込みを通知し、それ以降にクライアントがすべてのバイトを再送できるようにします。
        スロー:
        java.io.IOException
      • closeFinally

        void closeFinally()
                   throws java.lang.IllegalStateException,
                          java.io.IOException
        サポート終了。 
        チャネルを閉じてファイルをファイナライズします。ファイルがファイナライズされると、読み取りはできますが、書き込みはできなくなります。
        スロー:
        java.lang.IllegalStateException - 現在のリクエストで、ファイルのロックが保持されるかどうか
        java.io.IOException - 予期しない問題が発生したかどうか
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java の App Engine スタンダード環境