libro
www.tuyano.com
Google App Engine for Java(GAE/J)プログラミング入門

Google Cloud Storageを利用する (3/5)

作成:2012-06-10 11:14
更新:2012-06-10 11:25

■Cloud Storageへファイルを保存する

続いて、Cloud Storageへの「テキストファイルの保存」について説明しましょう。これも手順を追って説明していきます。

1. FileServiceの用意
FileService fileService = 
FileServiceFactory.getFileService();
こちらも最初に行うのは、FileServiceインスタンスの用意です。やはり、FileServiceFactory.getFileServiceを呼び出してインスタンスを取得します。

2. GSFileOptionsBuilderの作成
GSFileOptionsBuilder 変数 = new GSFileOptionsBuilder();
続いて、ファイルのオプション情報を管理するための「GSFileOptionsBuilder」というクラスのインスタンスを作成します。これは、この後で作成するAppEngineFileのファイルの各種設定や属性情報を管理するクラス「GSFileOptions」を生成するためのものです。このインスタンスを用意し、メソッド類を呼び出して設定をしていきます。

3. GSFileOptionsBuilderの設定
変数 = 《GSFileOptionsBuilder》.setBucket( バケット名 );
変数 = 《GSFileOptionsBuilder》.setKey( ファイル名 );
変数 = 《GSFileOptionsBuilder》.setMimeType( Mimeタイプの指定 );
変数 = 《GSFileOptionsBuilder》.setAcl( アクセス権の値 );
GSFileOptionsBuilderインスタンスには、設定を行う各種のメソッドが用意されています。中でも、この4つは必須のメソッドと考えてよいでしょう。ファイルが置かれるバケット名、ファイル名、Mimeタイプの指定、アクセス権の設定などを行います。

これらのメソッドは、呼びだすとそのインスタンスの設定を更新すると同時に、インスタンス自身を返します。「自身を返す」というのは、つまりメソッドをつなげて記述する、いわゆる「メソッドチェーン」の書き方が可能ということです。

4. GSFileOptionsの生成
GSFileOptions 変数 = 《GSFileOptionsBuilder》.build();
作成したGSFileOptionsBuilderの「build」を呼び出し、GSFileOptionsインスタンスを作成します。これがファイルの設定情報を管理するインスタンスになります。

5. AppEngineFileの作成
AppEngineFile file = fileService
        .createNewGSFile(《GSFileOptions》);
AppEngineFileを作成します。今回は、ファイルを保存するので、new AppEngineFileではなく、FileServiceの「createNewGSFile」というメソッドを利用します。これで引数にGSFileOptionsインスタンスを指定することで、その設定内容で新しいファイルのAppEngineFileインスタンスを作ります。

6. FileWriteChannelの作成
FileWriteChannel 変数 = 《FileService》.openWriteChannel(《AppEngineFile》,真偽値 );
ファイルを書きだすためのチャンネル「FileWriteChannel」クラスのインスタンスを作成します。これはFileServiceの「openWriteChannel」というメソッドを呼び出します。引数には、先ほど作成したAppEngineFileと、ロックするかどうかを示す真偽値を指定します。

7. Writerを用意する
Writer 変数 = Channels.newWriter(《FileWriteChannel》, 文字コード名 );
ファイルに出力をするためのWriterインスタンスを取得します。ChannelsnewWriterメソッドを使い、引数にFileWriteChannelインスタンスを文字コードを示すString値を指定します。――これでファイル出力のためのWriterが得られましたから、後は一般的なストリームの作業になりますね。

8.ストリームを操作する
PrintWriter 変数 = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
《PrintWriter》.println( 出力するテキスト );
Writerが得られれば、後は普通のストリーム操作ですね。PrintWriterを作成し、printlnで保存するテキストを書きだしていきます。

9. リソースを解放する
《PrintWriter》.close();
《FileWriteChannel》.closeFinally();
最後に、PrintWriterFileWriteChannelを開放すれば、作業終了です。FileWriteChannelの開放はcloseではなく、「closeFinally」というメソッドを呼び出します。ロード時とはちょっと違うので注意してください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※ファイル保存の基本的な処理

// public static final String BUCKETNAME = "…バケット名…";
// public static final String FILENAME = "…ファイル名…";

FileService fileService = FileServiceFactory.getFileService();
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
		.setBucket(BUCKETNAME)
		.setKey(FILENAME)
		.setMimeType("text/html")
		.setAcl("public_read");
AppEngineFile file = fileService
		.createNewGSFile(optionsBuilder.build());
boolean lock = true;
FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
PrintWriter ch_out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
ch_out.println(title);
ch_out.println();
ch_out.println(content);
ch_out.close();
writeChannel.closeFinally();
※関連コンテンツ

「Google App Engine for Java(GAE/J)プログラミング入門」に戻る