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

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

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

■Cloud Storageにあるファイルを読み込む

では、Cloud StorageにあるファイルをGAEから利用するための手順について説明をしていきましょう。まずは「テキストファイルのロード」からです。

1. FileServiceの用意
FileService fileService = 
FileServiceFactory.getFileService();
まず最初に用意するのは、「FileServece」クラスのインスタンスです。これは文字通り、ファイルを扱うためのサービスを利用するためのクラスです。これはFileServiceFactoryクラスにある「getFileService」というクラスメソッドを呼び出して取得できます。

2. AppEngineFileの用意
AppEngineFile 変数 = new AppEngineFile( ファイルの指定 );
GAEでファイルを扱うためのクラス「AppEngineFile」を用意します。引数には利用するファイルを指定してやるのですが、このファイルの指定の仕方は、ちょっと変わっているので注意が必要です。
"/gs/バケット名/ファイル名"
このように、Cloud Storageにあるファイルを扱う際には、「/gs/」の後にバケット名とファイル名をつなげたテキストを指定してやります。これで、指定されたファイルを扱うAppEngineFileインスタンスが用意できます。

3. FileReadChannelの作成
FileReadChannel 変数 =《FileServece》.openReadChannel(《AppEngineFile》, 真偽値 );
続いて行うのは「FileReadChannel」というクラスのインスタンスを作成する処理です。これは読み書きするための「チャンネル」というものを用意する作業です。openReadChannelで、ロードするAppEngineFileと、ファイルをロックするかどうかを示す真偽値を引数に指定してインスタンスを作成します。――ここまでくれば、あと一息です。

4. Readerを用意する
Reader 変数 = Channels.newReader(《FileReadChannel》, 文字コード名 );
Channelsクラスにある「newReader」というクラスメソッドを使い、Readerインスタンスを作成します。引数には、先ほどのチャンネル(FileReadChannel)と、文字コードを示すString値を用意します。これで、Cloud Storageのファイルからデータを読み込むためのReaderが用意できました。後は、ごく普通のストリーム操作をするだけです。

5. ストリームを操作する
BufferedReader 変数 = new BufferedReader(《Reader》);
String 変数 = 《BufferedReader》.readLine();
ReaderからBufferedReaderインスタンスを作り、readLineで行単位でテキストを読み込みます。必要なだけreadLineを繰り返していけばいいでしょう。このあたりは、ごく普通のストリーム操作ですね。

6. チャンネルを解放する
《FileReadChannel 》.close();
読み込みが完了したら、最後にFileReadChannelcloseで開放します。BufferedReaderReaderではなく、FileReadChannelcloseするようにしてください。けっこう新しいクラスがいくつも登場しましたが、インスタンスの作成手順などは決まりきっていますので、「こういう手順で処理を書けばいいんだ」と割りきって覚えてしまいましょう。

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

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

●プログラム・リスト●

※ファイル読み込みの基本的な処理

String filename = "……ファイルの指定……";
FileService fileService = FileServiceFactory.getFileService();
boolean lock = true;
AppEngineFile readableFile = new AppEngineFile(filename);
FileReadChannel readChannel = fileService.openReadChannel(readableFile, lock);

BufferedReader reader = new BufferedReader(Channels.newReader(readChannel, "UTF8"));
String line = null;
while((line = reader.readLine()) != null){
	out.println(line);
}
readChannel.close();
※関連コンテンツ

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