package xin.soar.example;
import java.io.IOException;
import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FastDFSUtil {
private static TrackerClient trackerClient;
private static TrackerServer trackerServer;
private static StorageClient storageClient;
private static StorageServer storageServer;
private static Logger logger = LoggerFactory.getLogger(FastDFSUtil.class);
/**
*
* @param conf_filename
*/
public static void init(String conf_filename) {
try {
ClientGlobal.init(conf_filename);
logger.info("ClientGlobal.configInfo(): " + ClientGlobal.configInfo());
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient(trackerServer, storageServer);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
}
}
/**
* 将文件上传到存储服务器
*
* @param group_name
* 存储服务器组名
* @param file_buff
* 文件内容
* @param file_ext_name
* 文件扩展名,不包括'.'
* @param meta_list
* @return 如果成功,返回字符串数组(results[0]: 存储文件的组名;results[1]: 新创建 的文件名) ;如果失败,则返回null
* @throws IOException
* @throws MyException
*/
public static String[] upload_file(String group_name, byte[] file_buff, String file_ext_name,
NameValuePair[] meta_list) throws IOException, MyException {
String[] result = storageClient.upload_file(group_name, file_buff, file_ext_name, meta_list);
if (result != null) {
String group_name_ = result[0];
String remote_filename = result[1];
logger.info(storageClient.get_file_info(group_name_, remote_filename).toString());
}
return result;
}
/**
* 从存储服务器下载文件
*
* @param group_name
* 存储服务器组名
* @param remote_filename
* 存储服务器上的文件名
* @param local_filename
* 本地文件名
* @return 0:成功,否则,失败
* @throws IOException
* @throws MyException
*/
public static int download_file(String group_name, String remote_filename, String local_filename)
throws IOException, MyException {
int errno = storageClient.download_file(group_name, remote_filename, local_filename);
return errno;
}
/**
* 从存储服务器删除文件
*
* @param group_name
* 存储服务器组名
* @param remote_filename
* 存储服务器上的文件名
* @return 0:成功,否则,失败
* @throws IOException
* @throws MyException
*/
public static int delete_file(String group_name, String remote_filename) throws IOException, MyException {
int errno = storageClient.delete_file(group_name, remote_filename);
return errno;
}
}