寝て起きて寝て

プログラミングが出来ない情報系のブログ

AWSS3に保存されているファイルを確認

結構忙しくてコードかけてない

今回はjavaでS3の指定したバケット内にファイルがあるかどうかを確認するプログラム

AWS SDK for JavaをぶちこんだEclipseで作るのがおすすめ


import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.PutObjectRequest;
 class File_test{

	public static void main(String[] args){

		String File_name = args[0];

		//S3内に引数のファイルがあるかどうかの確認
		boolean check = Check_S3(File_name);
		

	}




	public static boolean Check_S3(String file){
	//バケットの中に作ろうとしてるファイルがあるかどうかのチェック
		//型合わせ
		ArrayList<String> files = new ArrayList<String>();
		files.add(file+"/");

		//接頭辞の取得&それ以降の全文字列取得
		String prefixes = file.substring(0,1);
		String lang =file.substring(1)+"/";

		/*
         * Important: Be sure to fill in your AWS access credentials in the
         *            AwsCredentials.properties file before you try to run this
         *            sample.
         * http://aws.amazon.com/security-credentials
         */
    AmazonS3 s3 = null;
    	boolean flag = false;
    	try{
        s3 = new AmazonS3Client(new PropertiesCredentials(
                File_test.class.getResourceAsStream("AwsCredentials.properties")));
    	}catch(Exception e){
    		System.out.println("error");
    	}
    	String bucketName = "testfile";

//バケット直下のフォルダを参照
    	ListObjectsRequest request = new ListObjectsRequest(bucketName, prefixes, null, lang, null);
    	ObjectListing list = s3.listObjects(request);
    	do {
    		List<String> folders = list.getCommonPrefixes();
    		list = s3.listNextBatchOfObjects(list);
    		if (folders.equals(files)) {
    			flag = false;
    		}
    		else {
    			flag = true;
    		}
    	} while (list.getMarker() != null);

    	System.out.println(flag);
    	if(flag){
    		System.out.println("バケット内に無いからつくるね");
    	}else {

    		System.out.println("バケット内にあるから作らないよ");
		}
	return flag;
	}


これから機能を追加していくので分けてる
結構見直すところあるかも