1

FastDFS(2)java客户端

 2 years ago
source link: https://wakzz.cn/2017/09/30/fastdfs/(2)java%E5%AE%A2%E6%88%B7%E7%AB%AF/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

FastDFS(2)java客户端

祈雨的博客
2017-09-30
public class FastDFSOperation {
private static boolean hasInited = false;
private static void Init() {
synchronized (TXFastDFSOperation.class) {
if (hasInited)
return;
// 读取配置文件
try {
File file = new File(Thread.currentThread().getContextClassLoader().getResource("fdfs_client.conf").toURI());
ClientGlobal.init(file.getAbsolutePath());
TXFastDFSOperation.hasInited = true;
} catch (Exception e) {
e.printStackTrace();
}
}
}

private static StorageClient getStorageClient() throws IOException{
Init();
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getConnection();
ProtoCommon.activeTest(trackerServer.getSocket());
StorageClient storageClient = new StorageClient(trackerServer, null);
return storageClient;
}
/**
* 上传文件
* @param arg文件的输入流
* @param size文件的大小
* @param groupname文件要上传的group名称
* @param flexname文件的类型
* @return group / index
*/
public static String[] Uploadfile(InputStream arg, Long size,String groupname,String flexname) {
String[] stringArray = null;
NameValuePair[] nvp = null;
byte[] fileBuffer = null;
try{
fileBuffer = changeStreamToByteArray(arg);
nvp = new NameValuePair[]{new NameValuePair("size", size.toString())};
stringArray = getStorageClient().upload_file(groupname, fileBuffer, flexname, nvp);
}catch (Exception e) {
e.printStackTrace();
}
return stringArray;
}
/**
* 成功失败返回值自己去查
* @param group
* @param index
* @return
*/
public static Integer deleteFile(String group, String index) {
Integer returnValue = null;
try{
returnValue = getStorageClient().delete_file(group, index);
}catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}

/**
* 下载文件
* @param group文件所在group
* @param index文件的index
* @param offset带下载文件的偏移量
* @param downByte从偏移量往后需要下载的文件大小
* @return
*/
public static InputStream DownloadFile(String group, String index, Long offset, Long downByte) {
InputStream inputStream = null;
try {
byte[] fileBuffer = getStorageClient().download_file(group, index, offset, downByte);
inputStream = new ByteArrayInputStream(fileBuffer);
} catch (IOException | MyException e) {
e.printStackTrace();
}
return inputStream;
}
/**
* @param group
* @param index
* @param offset
* @param downByte
* @return
*/
public static byte[] DownloadFileReByte(String group, String index, Long offset, Long downByte) {
byte[] fileBuffer = null;
try {
fileBuffer = getStorageClient().download_file(group, index, offset, downByte);
} catch (IOException | MyException e) {
e.printStackTrace();
}
return fileBuffer;
}
/**
* 获取文件大小
* @param group文件所在的group
* @param index文件的index
* @return
*/
public static Long GetFileSize(String group, String index) {
FileInfo fileInfo = null;
Long returnValue = new Long(-1);
try {
fileInfo = getStorageClient().get_file_info(group, index);
} catch (Exception e) {
e.printStackTrace();
}
if(fileInfo != null) {
returnValue = fileInfo.getFileSize();
}
return returnValue;
}

/**
* 将文件流转换成字节数组
* @param is
* @return
* @throws IOException
*/
private static byte[] changeStreamToByteArray(InputStream is) throws IOException {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int offset = 0;
while((offset = is.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, offset);
}
byte[] fileBuffer = swapStream.toByteArray();
return fileBuffer;
}
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK