需求
因為使用FastDFS進行文件操作代碼大多都是通用的,所以我們這里在FastDFS類中將通用的功能進行封裝,并提供上傳、下載、刪除文件的方法。
注意:這里只是簡單的封裝,如果多線程會有問題
1. 抽取獲取StorageClient的方法
public static StorageClient getStorageClient() throws IOException, MyException {
//1.加載配置文件,默認去classpath下加載
ClientGlobal.init("fdfs_client.conf");
//2.創(chuàng)建TrackerClient對象
TrackerClient trackerClient = new TrackerClient();
//3.創(chuàng)建TrackerServer對象
trackerServer = trackerClient.getConnection();
//4.創(chuàng)建StorageServler對象
storageServer = trackerClient.getStoreStorage(trackerServer);
//5.創(chuàng)建StorageClient對象,這個對象完成對文件的操作
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
return storageClient;
}
2. 定義兩個全局變量
private static TrackerServer trackerServer = null;
private static StorageServer storageServer = null;
3. 抽取關閉資源的方法
public static void closeFastDFS() {
if (storageServer != null) {
try {
storageServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (trackerServer != null) {
try {
trackerServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. 改造文件上傳的方法
public static void fileUpload(){
try {
//1. 獲取StorageClient對象
StorageClient storageClient = getStorageClient();
//2.上傳文件 第一個參數(shù):本地文件路徑 第二個參數(shù):上傳文件的后綴 第三個參數(shù):文件信息
String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
for (String str:uploadArray) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
closeFastDFS();
}
}
5. 下載文件的方法
/下載文件的方法
public static void fileDownload(){
try {
//1. 獲取StorageClient對象
StorageClient storageClient = getStorageClient();
//2.下載文件 返回0表示成功,其它均表示失敗
int num = storageClient.download_file("group1",
"M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt","E:/bb.txt");
System.out.println(num);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
closeFastDFS();
}
}
6. 刪除文件的方法
/刪除文件的方法
public static void fileDelete(){
try {
//1. 獲取StorageClient對象
StorageClient storageClient = getStorageClient();
//2.刪除文件 返回0表示成功,其它均表示失敗
int num = storageClient.delete_file("group1",
"M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt");
System.out.println(num);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
closeFastDFS();
}
}
7. 主方法調用不同的方法進行測試