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; }
これから機能を追加していくので分けてる
結構見直すところあるかも