package samples;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import com.obs.services.model.PutObjectRequest;
import com.obs.services.model.S3Object;
/**
* This sample demonstrates how to create an empty folder under
* specified bucket to OBS using the OBS SDK for Java.
*/
public class CreateFolderSample
{
private static final String endPoint = "yourdomainname";
private static final String ak = "*** Provide your Access Key ***";
private static final String sk = "*** Provide your Secret Key ***";
private static ObsClient obsClient;
private static String bucketName = "my-obs-bucket-demo";
public static void main(String[] args)
throws IOException
{
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
config.setHttpsOnly(true);
try
{
/*
* Constructs a obs client instance with your account for accessing OBS
*/
obsClient = new ObsClient(ak, sk, config);
/*
* Create bucket
*/
System.out.println("Create a new bucket for demo\n");
obsClient.createBucket(bucketName);
/*
* Way 1:
* Create an empty folder without request body, note that the key must be
* suffixed with a slash
*/
final String keySuffixWithSlash1 = "MyObjectKey1/";
obsClient.putObject(bucketName, keySuffixWithSlash1, new ByteArrayInputStream(new byte[0]));
System.out.println("Creating an empty folder " + keySuffixWithSlash1 + "\n");
/*
* Verify whether the size of the empty folder is zero
*/
S3Object object = obsClient.getObject(bucketName, keySuffixWithSlash1, null);
System.out.println("Size of the empty folder '" + object.getObjectKey() + "' is " + object.getMetadata().getContentLength());
object.getObjectContent().close();
/*
* Way 2:
* Create an empty folder without request body, note that the key must be
* suffixed with a slash
*/
final String keySuffixWithSlash2 = "MyObjectKey2/";
PutObjectRequest request = new PutObjectRequest();
request.setBucketName(bucketName);
request.setObjectKey(keySuffixWithSlash2);
request.setInput(new ByteArrayInputStream(new byte[0]));
obsClient.putObject(request);
System.out.println("Creating an empty folder " + keySuffixWithSlash2 + "\n");
/*
* Verify whether the size of the empty folder is zero
*/
object = obsClient.getObject(bucketName, keySuffixWithSlash2, null);
System.out.println("Size of the empty folder '" + object.getObjectKey() + "' is " + object.getMetadata().getContentLength());
object.getObjectContent().close();
}
catch (ObsException e)
{
System.out.println("Response Code: " + e.getResponseCode());
System.out.println("Error Message: " + e.getErrorMessage());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Request ID: " + e.getErrorRequestId());
System.out.println("Host ID: " + e.getErrorHostId());
}
finally
{
if (obsClient != null)
{
try
{
/*
* Close obs client
*/
obsClient.close();
}
catch (IOException e)
{
}
}
}
}
}
package samples;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import com.obs.services.model.DeleteObjectsRequest;
import com.obs.services.model.DeleteObjectsResult;
import com.obs.services.model.DeleteObjectsResult.DeleteObjectResult;
import com.obs.services.model.DeleteObjectsResult.ErrorResult;
import com.obs.services.model.KeyAndVersion;
/**
* This sample demonstrates how to delete objects under specified bucket
* from OBS using the OBS SDK for Java.
*/
public class DeleteObjectsSample
{
private static final String endPoint = "yourdomainname";
private static final String ak = "*** Provide your Access Key ***";
private static final String sk = "*** Provide your Secret Key ***";
private static ObsClient obsClient;
private static String bucketName = "my-obs-bucket-demo";
public static void main(String[] args)
throws IOException
{
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
config.setHttpsOnly(true);
try
{
/*
* Constructs a obs client instance with your account for accessing OBS
*/
obsClient = new ObsClient(ak, sk, config);
/*
* Create bucket
*/
System.out.println("Create a new bucket for demo\n");
obsClient.createBucket(bucketName);
/*
* Batch put objects into the bucket
*/
final String content = "Thank you for using Object Storage Service";
final String keyPrefix = "MyObjectKey";
List<String> keys = new ArrayList<String>();
for (int i = 0; i < 100; i++)
{
String key = keyPrefix + i;
InputStream instream = new ByteArrayInputStream(content.getBytes());
obsClient.putObject(bucketName, key, instream, null);
System.out.println("Succeed to put object " + key);
keys.add(key);
}
System.out.println();
/*
* Delete all objects uploaded recently under the bucket
*/
System.out.println("\nDeleting all objects\n");
DeleteObjectsRequest request = new DeleteObjectsRequest();
request.setBucketName(bucketName);
request.setQuiet(false);
KeyAndVersion[] kvs = new KeyAndVersion[keys.size()];
int index = 0;
for (String key : keys)
{
kvs[index++] = new KeyAndVersion(key);
}
request.setKeyAndVersions(kvs);
System.out.println("Delete results:");
DeleteObjectsResult deleteObjectsResult = obsClient.deleteObjects(request);
for (DeleteObjectResult object : deleteObjectsResult.getDeletedObjectResults())
{
System.out.println("\t" + object);
}
System.out.println("Error results:");
for (ErrorResult error : deleteObjectsResult.getErrorResults())
{
System.out.println("\t" + error);
}
System.out.println();
}
catch (ObsException e)
{
System.out.println("Response Code: " + e.getResponseCode());
System.out.println("Error Message: " + e.getErrorMessage());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Request ID: " + e.getErrorRequestId());
System.out.println("Host ID: " + e.getErrorHostId());
}
finally
{
if (obsClient != null)
{
try
{
/*
* Close obs client
*/
obsClient.close();
}
catch (IOException e)
{
}
}
}
}
}
package samples;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import com.obs.services.model.S3Object;
/**
* This sample demonstrates how to download an object
* from OBS in different ways using the OBS SDK for Java.
*/
public class DownloadSample
{
private static final String endPoint = "yourdomainname";
private static final String ak = "*** Provide your Access Key ***";
private static final String sk = "*** Provide your Secret Key ***";
private static ObsClient obsClient;
private static String bucketName = "my-obs-bucket-demo";
private static String objectKey = "my-obs-object-key-demo";
private static String localFilePath = "/temp/" + objectKey;
public static void main(String[] args)
throws IOException
{
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
config.setHttpsOnly(true);
try
{
/*
* Constructs a obs client instance with your account for accessing OBS
*/
obsClient = new ObsClient(ak, sk, config);
/*
* Create bucket
*/
System.out.println("Create a new bucket for demo\n");
obsClient.createBucket(bucketName);
/*
* Upload an object to your bucket
*/
System.out.println("Uploading a new object to OBS from a file\n");
obsClient.putObject(bucketName, objectKey, createSampleFile());
System.out.println("Downloading an object\n");
/*
* Download the object as an inputstream and display it directly
*/
simpleDownload();
File localFile = new File(localFilePath);
if (!localFile.getParentFile().exists())
{
localFile.getParentFile().mkdirs();
}
System.out.println("Downloading an object to file:" + localFilePath + "\n");
/*
* Download the object to a file
*/
downloadToLocalFile();
System.out.println("Deleting object " + objectKey + "\n");
obsClient.deleteObject(bucketName, objectKey, null);
}
catch (ObsException e)
{
System.out.println("Response Code: " + e.getResponseCode());
System.out.println("Error Message: " + e.getErrorMessage());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Request ID: " + e.getErrorRequestId());
System.out.println("Host ID: " + e.getErrorHostId());
}
finally
{
if (obsClient != null)
{
try
{
/*
* Close obs client
*/
obsClient.close();
}
catch (IOException e)
{
}
}
}
}
private static void downloadToLocalFile()
throws ObsException, IOException
{
S3Object s3Object = obsClient.getObject(bucketName, objectKey, null);
ReadableByteChannel rchannel = Channels.newChannel(s3Object.getObjectContent());
ByteBuffer buffer = ByteBuffer.allocate(4096);
WritableByteChannel wchannel = Channels.newChannel(new FileOutputStream(new File(localFilePath)));
while (rchannel.read(buffer) != -1)
{
buffer.flip();
wchannel.write(buffer);
buffer.clear();
}
rchannel.close();
wchannel.close();
}
private static void simpleDownload()
throws ObsException, IOException
{
S3Object s3Object = obsClient.getObject(bucketName, objectKey, null);
displayTextInputStream(s3Object.getObjectContent());
}
private static void displayTextInputStream(InputStream input)
throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true)
{
String line = reader.readLine();
if (line == null)
break;
System.out.println("\t" + line);
}
System.out.println();
reader.close();
}
private static File createSampleFile()
throws IOException
{
File file = File.createTempFile("obs-java-sdk-", ".txt");
file.deleteOnExit();
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write("abcdefghijklmnopqrstuvwxyz\n");
writer.write("0123456789011234567890\n");
writer.close();
return file;
}
}