Google Cloud Storageを利用する (3/5)
作成:2012-06-10 11:14
更新:2012-06-10 11:25
更新:2012-06-10 11:25
■Cloud Storageへファイルを保存する
続いて、Cloud Storageへの「テキストファイルの保存」について説明しましょう。これも手順を追って説明していきます。
1. FileServiceの用意
2. GSFileOptionsBuilderの作成
3. GSFileOptionsBuilderの設定
これらのメソッドは、呼びだすとそのインスタンスの設定を更新すると同時に、インスタンス自身を返します。「自身を返す」というのは、つまりメソッドをつなげて記述する、いわゆる「メソッドチェーン」の書き方が可能ということです。
4. GSFileOptionsの生成
5. AppEngineFileの作成
6. FileWriteChannelの作成
7. Writerを用意する
8.ストリームを操作する
9. リソースを解放する
1. FileServiceの用意
FileService fileService =こちらも最初に行うのは、FileServiceインスタンスの用意です。やはり、FileServiceFactory.getFileServiceを呼び出してインスタンスを取得します。
FileServiceFactory.getFileService();
2. GSFileOptionsBuilderの作成
GSFileOptionsBuilder 変数 = new GSFileOptionsBuilder();続いて、ファイルのオプション情報を管理するための「GSFileOptionsBuilder」というクラスのインスタンスを作成します。これは、この後で作成するAppEngineFileのファイルの各種設定や属性情報を管理するクラス「GSFileOptions」を生成するためのものです。このインスタンスを用意し、メソッド類を呼び出して設定をしていきます。
3. GSFileOptionsBuilderの設定
変数 = 《GSFileOptionsBuilder》.setBucket( バケット名 );GSFileOptionsBuilderインスタンスには、設定を行う各種のメソッドが用意されています。中でも、この4つは必須のメソッドと考えてよいでしょう。ファイルが置かれるバケット名、ファイル名、Mimeタイプの指定、アクセス権の設定などを行います。
変数 = 《GSFileOptionsBuilder》.setKey( ファイル名 );
変数 = 《GSFileOptionsBuilder》.setMimeType( Mimeタイプの指定 );
変数 = 《GSFileOptionsBuilder》.setAcl( アクセス権の値 );
これらのメソッドは、呼びだすとそのインスタンスの設定を更新すると同時に、インスタンス自身を返します。「自身を返す」というのは、つまりメソッドをつなげて記述する、いわゆる「メソッドチェーン」の書き方が可能ということです。
4. GSFileOptionsの生成
GSFileOptions 変数 = 《GSFileOptionsBuilder》.build();作成したGSFileOptionsBuilderの「build」を呼び出し、GSFileOptionsインスタンスを作成します。これがファイルの設定情報を管理するインスタンスになります。
5. AppEngineFileの作成
AppEngineFile file = fileServiceAppEngineFileを作成します。今回は、ファイルを保存するので、new AppEngineFileではなく、FileServiceの「createNewGSFile」というメソッドを利用します。これで引数にGSFileOptionsインスタンスを指定することで、その設定内容で新しいファイルのAppEngineFileインスタンスを作ります。
.createNewGSFile(《GSFileOptions》);
6. FileWriteChannelの作成
FileWriteChannel 変数 = 《FileService》.openWriteChannel(《AppEngineFile》,真偽値 );ファイルを書きだすためのチャンネル「FileWriteChannel」クラスのインスタンスを作成します。これはFileServiceの「openWriteChannel」というメソッドを呼び出します。引数には、先ほど作成したAppEngineFileと、ロックするかどうかを示す真偽値を指定します。
7. Writerを用意する
Writer 変数 = Channels.newWriter(《FileWriteChannel》, 文字コード名 );ファイルに出力をするためのWriterインスタンスを取得します。ChannelsのnewWriterメソッドを使い、引数にFileWriteChannelインスタンスを文字コードを示すString値を指定します。――これでファイル出力のためのWriterが得られましたから、後は一般的なストリームの作業になりますね。
8.ストリームを操作する
PrintWriter 変数 = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));Writerが得られれば、後は普通のストリーム操作ですね。PrintWriterを作成し、printlnで保存するテキストを書きだしていきます。
《PrintWriter》.println( 出力するテキスト );
9. リソースを解放する
《PrintWriter》.close();最後に、PrintWriterとFileWriteChannelを開放すれば、作業終了です。FileWriteChannelの開放はcloseではなく、「closeFinally」というメソッドを呼び出します。ロード時とはちょっと違うので注意してください。
《FileWriteChannel》.closeFinally();
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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)プログラミング入門」に戻る