2013年7月5日金曜日

Hello Goolge Cloud Storage - その7

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちらです。

ステップ4:オブジェクトの移動

mvコマンドを使うと、あるバケットから他へとオブジェクトを移動することができます。mvコマンドはオブジェクトの名前変更のためにも使うことができます。dogsバケットからcatsバケットへファイルのすべてを移動するには、以下のコマンドを使用します:
gsutil mv gs://dogs/*.jpg gs://cats/
catsバケット内に移動するpoodle.jpgの名前を変更するには、以下のコマンドを使用します:
gsutil mv gs://cats/poodle.jpg gs://cats/siamese.jpg

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年5月31日金曜日

Hello Goolge Cloud Storage - その6

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちらです。

ステップ3:バケットとオブジェクトのリスト

次に、生成したバケットとオブジェクトをリスト化します。これを行うには、lsコマンドを使うことができます。例として、以下のコマンドは特定のプロジェクト内のバケットをリスト化します:
gsutil ls
以下のコマンドはdogsというバケットの中に格納されているオブジェクトをリスト化します。
gsutil ls gs://dogs
-lオプションの使用 -lオプションを使用して、オブジェクトとバケットの長いリストを出力することができます。これは、単独でlsコマンドを使用するよりも多くの情報を提供します。例として、以下のコマンドではdogs内のすべてのオブジェクトについての情報をリスト化します:
gsutil ls -l gs://dogs
コンテンツの代わりにバケットの情報を取得したい場合は、-bオプションをバケット名を後ろに続けて含めることで可能になります。例として、以下のコマンドリストはdogsバケットについての情報をリスト化します。
gsutil ls -l -b gs://dogs
バケット全体のサイズをリスト化するには、以下のコマンドのいずれかを使用できます:
  • gsutil ls -l
    バケットと全体のサイズのリストを提供します。
  • gsutil ls -l gs://*
    バケット内のすべてのオブジェクトと、全体のサイズの完全なリストを提供します。
Using the -L option - -Lオプションの使用 lsコマンドと共に-Lオプションを使用すると、プロジェクト内のバケットとオブジェクトについての利用可能な詳細な情報の多くをリスト化することができます。例として、以下のコマンドはdogsバケット内にあるオブジェクトの、サイズ、最終更新日時、キャッシュコントロールなどのような包括的な情報を提供します。
gsutil ls -L gs://dogs/*
以下のコマンドで、バケットについての詳細な情報を参照することができます。
gsutil ls -L
内容の代わりに特定のバケットについての詳細な情報を取得したい場合は、-bオプションにバケット名を続けます。例として、以下のコマンドはdogsバケットについての詳細な情報を提供します:
gsutil ls -L -b gs://dogs
Note:このオプションはオブジェクトとバケットについての詳細な情報のほとんどを提供しますが、-Lオプションは必要とする全ての情報を取得しようとして複数のGETリクエストを使用するために、月間の帯域幅クォータを使用します。それに比較して、-lオプションは必要とする情報につき一つだけのGETリクエストを行うため、-Lオプションよりもずっと早くなります。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年5月16日木曜日

Hello Goolge Cloud Storage - その5

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちらです。

ステップ2:オブジェクトをバケットにアップロードする

ここまでで幾つかバケットを生成することができたので、それらの中にオブジェクト2つの組み合わせをアップロードしてみましょう。これを行うには、新しいディレクトリを生成して、ディレクトリに2つのイメージファイルを作り、ファイル名をpoodle.jpgとcollie.jpgとします。ファイルをアップロードするために、ディレクトリを今生成したものに変更して、cpコマンドを以下の様に使用します。

gsutil cp *.jpg gs://dogs

cpコマンドはUNIXの再帰(-R)オプションつきでcpコマンドと同様に動作し、ディレクトリ全体やディレクトリ内のコンテンツのコピーを行います。GSUtilはワイルドカードもサポートしていて、ファイルのバッチコピー・ムーブを簡単に行えます。オブジェクトのアップロードの方法によって、GSUtilは以下の一定のガイドラインに従った名前を付けたオブジェクトを生成します。
・ディレクトリを再帰的にアップロードするために-Rオプションを使用する場合、GSUtilは再帰プロセスをスタートするディレクトリをベースにした名前を付けたオブジェクトを生成します。
例として、client1/low_priorityy/に存在するディレクトリが存在して、gsutil cp -R client1/low_priority dst_uri というコマンドを使用して再帰的にコピーを行う場合、再帰プロセスが開始されるディレクトリ名がlow_priorityなので、GSUtilはオブジェクト名にlow_priorityを使用した新しいオブジェクトを生成します。

gs://dst_uri/low_priority/my_object

-Rオプションはサブディレクトリもコピーを行い、オブジェクト名にはサブディレクトリ名も含まれます。例として、client1/low_priorityがさらにdatasheetsというディレクトリを含む場合、gsutil cp -R client1/low_priority des_uriは以下の様に名前をつけてオブジェクトを生成します。

gs://dst_uri/low_priority/building.cad gs://dst_uri/low_priority/schematics.cad gs://dst_uri/low_priority/datasheets/assets.txt gs://dst_uri/low_priority/datasheets/expenses.txt

このような動作は、組織の目的別での使用やGoogle Storage Managerでの利用に役に立ちますが、注意深く行わないと、意図しないパスをファイル名の中に組み込んでしまうことにもなります(例えば、上記の例ではlow_priorityという部分をを顧客に対して付けてしまいます)。
・ディレクトリをそのディレクトリ名を先頭に追加しないでコピーやアップロードする必要がある場合、ワイルドカードをしようできます。
例として、gsutil cp client1/low_priority/* dst_uri としてファイルをコピーすると、GSUtilは先頭にディレクトリ名を追加することなくオブジェクトをディレクトリにコピーします。

gs://dst_uri/my_object

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年4月25日木曜日

Hello Goolge Cloud Storage - その4

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。

第1回はこちら、第2回はこちら、第3回はこちらです。

ステップ1:バケットの生成

最初に、一意のバケット名でプロジェクトに2つのバケットを生成します。mbコマンドを使うことで可能です。例として、以下のコマンドはcatsとdogsという名前のバケットを生成します。
gsutil mb gs://cats gs://dogs

ノート:GSUtilをWindowsOS上で実行している場合、Pythonインタプリタを最初に呼び出す必要があります。例として、catsとdogsという名前の2つのバケットを生成するには、
python gsutil mb gs://cats gs://dogs

とコマンドプロンプトにタイプしなければなりません。

バケットを生成する時には他に存在しない名前を付けるようにしてください。catsやdogsのような名前のバケットを生成しようとすると、以下のようなエラーを受け取る可能性があるからです:
Failure: GSCreateError: 409 Conflict BucketNameUnavailableThe requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again..
これは、catやdogというバケット名は既に使われているということを意味しています。Google Cloud Storageは単一のネームスペースを持つので、バケット名はGoogle Cloud Storageシステム全体を通して他と重複しないようにしなければなりません。他の誰かが既にcatsやdogsという名前のバケットを生成していた場合、あなたはこれらの名前でバケットを生成することは認められません。重複しないようにバケット名を変更する必要がありますが、同時に以下のバケット命名ガイドラインに従う必要もあります。
場所による制約を指定することも可能なので、-l<location>フラグを付けることで地理的な位置を指定してバケットを生成することができます。詳しくは、Specifying Bucket Locationsを参照してください。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年4月12日金曜日

Hello Goolge Cloud Storage - その3

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。

第1回はこちら、第2回はこちらです。

Hello Google Cloud Storage! Exercises - Hello Google Cloud Storage!演習

以下の演習は、Google Cloud StorageをGSUtilコマンドラインツールを通しての使用を開始する手助けとなります。演習を開始する前提条件をご覧になっていない場合は、上の項目を参照してください。
この演習が終われば、以下のタスクが完了します。
  • バケットの生成と削除
  • オブジェクトのアップロード、削除、移動
  • バケットとオブジェクトのリスト
  • オブジェクトとバケットの共有

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年3月28日木曜日

Hello Goolge Cloud Storage - その2

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。

第1回はこちらです。


Prerequisites 前提条件

演習を開始する前に、以下の前提条件を満たす必要があります。
  • この演習を完了するためにはGoogle Cloud Storageにアクセスする必要があります。 プロジェクトチームのメンバーとして既存のGoogle Accountによるか、直近にGoogle Cloud Storageのアカウントを作成している場合、Google Cloud Storageにアクセスできること
  • Python 2.6またはPython 2.7をインストール済みであること 現在のバージョンのGSUtilはPython 2.6またはPython 2.7のみサポートしています。
  • GSUtilの最新バージョンがインストールされていること GSUtilはGoogle Cloud Storageにアクセスを行うPythonアプリケーションです。
上記の前提条件を満たしたら、演習を続けていきましょう。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年3月10日日曜日

Hello Goolge Cloud Storage - その1

Google Cloud Storageのファーストステップを紹介する、
Hello Google Cloud Storageページを翻訳してみます。

このページで紹介されている機能を試すには、
GSUtilのセットアップとGoogle Cloud Storageサービスの認証が必要です。



Hello Google Cloud Storage!

Hello Google Cloud Storage!のページは、GSUtilツールを使ってGoogle Cloud Storageの使用を開始するための簡単で素早い方法を提供します。この演習はGoogle Cloud StorageをGSUtilと共に使用する幾つかの基本的なタスクを通して、基本的なGoogle Cloud Storageの機能を探索する手助けをします。

この演習の最後では、より高度なGSUtilの機能についてGSUtilのリファレンスガイド をレビューできます。

ノート:このドキュメントの演習は、GSUtilのセットアップとGoogle Cloud Storageサービスの認証を必要としています。単にダウンロードしたり、パブリックにアクセス可能なオブジェクトにアクセスする場合、GSUtilクライアントをインストールしてからオブジェクトをダウンロードするのみで行えます。パブリックにアクセス可能なオブジェクトにアクセスするためには、Google Cloud Storageのアクティブ化、課金の設定、Google Cloud Storageサービスの認証は必要ありません。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年2月21日木曜日

Google Cloud Storageのドキュメント - Java API概要 その14

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちら、第8回はこちら、第9回はこちら
第10回はこちら、第11回はこちら、第12回はこちら
第13回はこちらです。

Quotas and Limits - クォータと制限

Cloud Storageは、豊富な無料試用クォータを提供する従量制有料サービスです。無料クォータを超えた場合は、Cloud Storage料金表に基づいて課金されます。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年2月8日金曜日

Google Cloud Storageのドキュメント - Java API概要 その13

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちら、第8回はこちら、第9回はこちら
第10回はこちら、第11回はこちら、第12回はこちらです。

  • アプリケーションをデプロイします。
    Eclipseから
    • EclipseのツールバーにあるGoogleアイコンをクリックします。
    • ドロップダウンメニューのDeploy to App Engineをクリックします。
    • App Engine project settings...をクリックします。
    • Application IDをダイアログのDeploymentセクションに入力して、OKボタンをクリックします。
    • メールアドレスとパスワードを入力して、Deployをクリックします。
    コマンドラインから: アプリケーションのコードとファイルをappcfg.cmd(Windows)またはappcfg.sh(Mac OS X,Linux)という名前のSDKに含まれているコマンドを使ってアップロードすることができます。 AppCfgは、App Engineのアプリケーション用の対話型多目的ツールです。コマンドは、アクション名、アプリケーションのwar/ディレクトリへのパス、その他のオプションを引数とします。App Engineにアプリケーションのコードをアップロードするには、アップデートアクションを使用します。 Windowsでアップロードを行うには:
    ..\appengine-java-sdk\bin\appcfg.cmd update war
    
    Mac OS XまたはLinuxでアップロードを行うには:
    ../appengine-java-sdk/bin/appcfg.sh update war
    
    Googleアカウントのユーザー名とパスワードをプロンプトに入力してください。
  • http://application-id.appspot.comでアプリケーションを参照してください。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年2月1日金曜日

Google Cloud Storageのドキュメント - Java API概要 その12

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちら、第8回はこちら、第9回はこちら
第10回はこちら、第11回はこちらです。

  • 以下のコードでGuestbookServlet.javaのdoGet()メソッドを上書きして、BACKETNAMEとFILENAMEをあなたのバケット及びファイル名に書き換えます。
    /**
     * Copyright 2011 Google Inc. All Rights Reserved.
     * Create, Write, Read, and Finalize Cloud Storage objects.
     * Access your app at: http://myapp.appspot.com/
    **/
    
    @SuppressWarnings("serial")
    /**
     * Copyright 2011 Google Inc. All Rights Reserved.
     * Create, Write, Read, and Finalize Cloud Storage objects.
     * Access your app at: http://myapp.appspot.com/
    **/
    
    @SuppressWarnings("serial")
    public class GuestbookServlet extends HttpServlet {
       public static final String BUCKETNAME = "YOUR_BUCKET_NAME";
       public static final String FILENAME = "YOUR_FILE_NAME";
    
      @Override
      public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world from java");
        FileService fileService = FileServiceFactory.getFileService();
        GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
           .setBucket(BUCKETNAME)
           .setKey(FILENAME)
           .setMimeType("text/html")
           .setAcl("public_read")
           .addUserMetadata("myfield1", "my field value");
        AppEngineFile writableFile =
             fileService.createNewGSFile(optionsBuilder.build());
        // Open a channel to write to it
         boolean lock = false;
         FileWriteChannel writeChannel =
             fileService.openWriteChannel(writableFile, lock);
         // Different standard Java ways of writing to the channel
         // are possible. Here we use a PrintWriter:
         PrintWriter out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
         out.println("The woods are lovely dark and deep.");
         out.println("But I have promises to keep.");
         // Close without finalizing and save the file path for writing later
         out.close();
         String path = writableFile.getFullPath();
         // Write more to the file in a separate request:
         writableFile = new AppEngineFile(path);
         // Lock the file because we intend to finalize it and
         // no one else should be able to edit it
         lock = true;
         writeChannel = fileService.openWriteChannel(writableFile, lock);
         // This time we write to the channel directly
         writeChannel.write(ByteBuffer.wrap
                   ("And miles to go before I sleep.".getBytes()));
    
         // Now finalize
         writeChannel.closeFinally();
         resp.getWriter().println("Done writing...");
    
         // At this point, the file is visible in App Engine as:
         // "/gs/BUCKETNAME/FILENAME"
         // and to anybody on the Internet through Cloud Storage as:
         // (http://storage.googleapis.com/BUCKETNAME/FILENAME)
         // We can now read the file through the API:
         String filename = "/gs/" + BUCKETNAME + "/" + FILENAME;
         AppEngineFile readableFile = new AppEngineFile(filename);
         FileReadChannel readChannel =
             fileService.openReadChannel(readableFile, false);
         // Again, different standard Java ways of reading from the channel.
         BufferedReader reader =
                 new BufferedReader(Channels.newReader(readChannel, "UTF8"));
         String line = reader.readLine();
         resp.getWriter().println("READ:" + line);
    
        // line = "The woods are lovely, dark, and deep."
         readChannel.close();
      }
    }
    

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年1月27日日曜日

Google Cloud Storageのドキュメント - Java API概要 その11

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちら、第8回はこちら、第9回はこちら
第10回はこちらです。

Complete Sample App - サンプルアプリケーション

以下は、App EngineアプリケーションでCloud Storage APIを使用するデモンストレーションであるサンプルアプリケーションです。アプリケーションを実行するには、バケットに対してWRITEアクセスを持つか、オーナーでなければなりません。 このアプリケーションをセットアップするには:
  • Google Plugin for EclipseページのCreating a projectセクション以下の指示に従って、プラグインのインストールとセットアップを行います。
  • あなたのGuestbookServlet.javaファイルの先頭に以下のインポートをコピーします。
    import com.google.appengine.api.files.AppEngineFile;
    import com.google.appengine.api.files.FileReadChannel;
    import com.google.appengine.api.files.FileService;
    import com.google.appengine.api.files.FileServiceFactory;
    import com.google.appengine.api.files.FileWriteChannel;
    import com.google.appengine.api.files.GSFileOptions.GSFileOptionsBuilder;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.nio.ByteBuffer;
    import java.nio.channels.Channels;
    
    import javax.servlet.http.*;
    

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年1月18日金曜日

Google Cloud Storageのドキュメント - Java API概要 その10

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちら、第8回はこちら、第9回はこちらです。

Reading the Object - オブジェクトの読み出し

オブジェクトを読み出す前に、オブジェクトのファイナライズを行わなければなりません。 オブジェクトを読み出すには:
boolean lockForRead = false;
String filename = "/gs/my_bucket/my_object";
AppEngineFile readableFile = new AppEngineFile(filename);
FileReadChannel readChannel = fileService.openReadChannel(readableFile, lockForRead);

// Read the file in whichever way you'd like
BufferedReader reader = new BufferedReader(Channels.newReader(readChannel, "UTF8"));
String line = reader.readLine();
resp.getWriter().println("READ:" + line);

readChannel.close();
一つのAPIコールでアプリケーションによって読み出されるオブジェクトの最大サイズは、32メガバイトです。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年1月10日木曜日

Google Cloud Storageのドキュメント - Java API概要 その9

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちら、第8回はこちらです。

Finalizing the Object - オブジェクトのファイナライズ

オブジェクトへの書き込みが終了した後、読み出しを行う前にファイナライズを行う必要があります:
// Finalize the object
writeChannel.closeFinally();
ここまでで、/gs/my_bucket/my_objectのファイル名でApp Engineからオブジェクトが可視状態となります。パブリックアクセス可でオブジェクトを設定している場合、http://storage.googleapis.com/my_bucket/my_objectのURLを使ってアクセスすることができます。 一度オブジェクトをファイナライズすると、後から書き込みを行うことはできなくなります。ファイルの内容の変更を行いたい場合は、上書きするために、同じ名前で新しいオブジェクトの生成を行う必要があるでしょう。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/

2013年1月4日金曜日

Google Cloud Storageのドキュメント - Java API概要 その8

Google Cloud StorageのJava APIの概要についての
ドキュメントを翻訳しています。

翻訳元はこちらです。

このドキュメントは、Google App Engineアプリケーションから
Google Cloud Storageの機能を呼び出す方法について
説明しています。

現在は試験的運用中なので、今後変更があるかもしれません。

第1回はこちら、第2回はこちら、第3回はこちら
第4回はこちら、第5回はこちら、第6回はこちら
第7回はこちらです。

Opening and Writing to the Object - オブジェクトのオープン及び書き込み

オブジェクトに書き込むためには、書き込みチャネルをオープンしなければなりません:
// Open a channel for writing
boolean lockForWrite = false; // Do you want to exclusively lock this object?
FileWriteChannel writeChannel = fileService.openWriteChannel(writableFile, lockForWrite);

次に、標準的なJavaの方法を使ってオブジェクトに書き込むことができます:
// For this example, we write to the object using the PrintWriter
PrintWriter out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
out.println("The woods are lovely and deep.");
out.println("But I have promises too keep.");

// Close the object without finalizing.
out.close();

/**
 * You can write to this file again, later, by saving the file path.
 * It is not possible to read the file until you finalize it.
 * Once you finalize a file, it is not possible to write to it.
 */

// Save the file path
String path = writableFile.getFullPath();

// Lock the file so no one else can access it at the same time
lockForWrite = true;

// Write to the unfinalized file again in a separate request
writableFile = new AppEngineFile(path);
writeChannel = fileService.openWriteChannel(writableFile, lockForWrite);
writeChannel.write(ByteBuffer.wrap("And miles to go before I sleep.".getBytes()));

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans-hrd.appspot.com/