fdfs_client.conf如下

connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = no
tracker_server = 192.168.42.29:22122
package com.ctl.utils;import com.ctl.utils.json.JsonDateValueProcessor;
import com.ctl.utils.json.JsonNumberValueProcessor;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.apache.commons.io.IOUtils;
import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;/*** <p>Title: FastFdsUtil</p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2018</p>* <p>Company: www.ctl.com</p>* @author guolin* @version 1.0* @date 2018-08-14 21:04*/
public class FastFdsUtil {static Logger logger = LoggerFactory.getLogger(FastFdsUtil.class);static JsonConfig jsonConfig = new JsonConfig();static {try {String confPath = FastFdsUtil.class.getClassLoader().getResource("fdfs_client.conf").getPath();ClientGlobal.init(confPath);Map<String, Object> map = new HashMap<>();jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());jsonConfig.registerJsonValueProcessor(Timestamp.class, new JsonDateValueProcessor());jsonConfig.registerJsonValueProcessor(Integer.class, new JsonNumberValueProcessor());jsonConfig.registerJsonValueProcessor(Long.class, new JsonNumberValueProcessor());jsonConfig.registerJsonValueProcessor(Byte.class, new JsonNumberValueProcessor());jsonConfig.registerJsonValueProcessor(Float.class, new JsonNumberValueProcessor());jsonConfig.registerJsonValueProcessor(Double.class, new JsonNumberValueProcessor());} catch (IOException e) {logger.error("FastFds初始化失败", e);} catch (MyException e) {logger.error("FastFds初始化失败", e);}}/*** 上传到服务器* @param localFilePath 本地文件全路径* @return*/public String[] fileLocalUpload(String localFilePath) {return fileLocalUpload(localFilePath, null);}/*** 上传到服务器* @param localFilePath 本地文件全路径* @param nvp  NameValuePair* @return*/public String[] fileLocalUpload(String localFilePath, NameValuePair[] nvp) {try {TrackerClient tracker = new TrackerClient();TrackerServer trackerServer = tracker.getConnection();StorageServer storageServer = null;StorageClient storageClient = new StorageClient(trackerServer, storageServer);String fileIds[] = storageClient.upload_file(localFilePath, "png", nvp);logger.info("fileIds.length={}", fileIds.length);logger.info("组名={}", fileIds[0]);logger.info("路径={} ", fileIds[1]);return fileIds;} catch (FileNotFoundException e) {logger.error("FastFds上传失败", e);} catch (IOException e) {logger.error("FastFds上传失败", e);} catch (MyException e) {logger.error("FastFds上传失败", e);}return null;}/*** 从文件服务器下载* @param remoteFilename 文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @return*/public boolean fileServerDownload(String remoteFilename) {return fileServerDownload("group1", remoteFilename, System.getProperty("java.io.tmpdir") + UUID.randomUUID().toString() + ".tmp");}/*** 从文件服务器下载* @param remoteFilename 服务器文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @param localDownloadPath 下载到本地路径* @return*/public boolean fileServerDownload(String remoteFilename, String localDownloadPath) {return fileServerDownload("group1", remoteFilename, localDownloadPath);}/*** 从文件服务器下载* @param groupName 组名* @param remoteFilename 服务器文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @param localDownloadPath 下载到本地路径* @return*/public boolean fileServerDownload(String groupName, String remoteFilename, String localDownloadPath) {try {TrackerClient tracker = new TrackerClient();TrackerServer trackerServer = tracker.getConnection();StorageServer storageServer = null;StorageClient storageClient = new StorageClient(trackerServer, storageServer);byte[] b = storageClient.download_file(groupName, remoteFilename);IOUtils.write(b, new FileOutputStream(localDownloadPath));return true;} catch (Exception e) {logger.error("FastFds下载失败", e);return false;}}/*** 获取文件信息* @param remoteFilename  服务器文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @return*/public FileInfo getFileInfo(String remoteFilename) {return getFileInfo("group1", remoteFilename);}/*** 获取文件信息* @param groupName 组名* @param remoteFilename  服务器文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @return*/public FileInfo getFileInfo(String groupName, String remoteFilename) {try {TrackerClient tracker = new TrackerClient();TrackerServer trackerServer = tracker.getConnection();StorageServer storageServer = null;StorageClient storageClient = new StorageClient(trackerServer, storageServer);FileInfo fi = storageClient.get_file_info(groupName, remoteFilename);System.out.println(fi.getSourceIpAddr());System.out.println(fi.getFileSize());System.out.println(fi.getCreateTimestamp());System.out.println(fi.getCrc32());return fi;} catch (Exception e) {logger.error("FastFds获取文件信息失败", e);return null;}}public NameValuePair[] getFileMate(String remoteFilename) {return getFileMate("group1", remoteFilename);}public NameValuePair[] getFileMate(String groupName, String remoteFilename) {try {TrackerClient tracker = new TrackerClient();TrackerServer trackerServer = tracker.getConnection();StorageServer storageServer = null;StorageClient storageClient = new StorageClient(trackerServer, storageServer);NameValuePair nvps[] = storageClient.get_metadata(groupName, remoteFilename);for (NameValuePair nvp : nvps) {System.out.println(nvp.getName() + ":" + nvp.getValue());}return nvps;} catch (Exception e) {logger.error("FastFds获取文件描述信息失败", e);return null;}}/*** 删除服务器文件* @param remoteFilename 服务器文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @return*/public boolean delete(String remoteFilename) {return delete("group1", remoteFilename);}/*** 删除服务器文件* @param groupName 组名* @param remoteFilename  服务器文件名称例如: M00/00/00/wKgqHVty2ZCAHaBvAAE0vHMtwgw608.png* @return*/public boolean delete(String groupName, String remoteFilename) {try {TrackerClient tracker = new TrackerClient();TrackerServer trackerServer = tracker.getConnection();StorageServer storageServer = null;StorageClient storageClient = new StorageClient(trackerServer, storageServer);int i = storageClient.delete_file("group1", remoteFilename);logger.info(i == 0 ? "删除成功" : "删除失败:" + i);return i == 0 ? true : false;} catch (Exception e) {logger.error("FastFds删除失败", e);return false;}}public static void main(String[] args) {FastFdsUtil fastFdsTest = new FastFdsUtil();String[] strings = fastFdsTest.fileLocalUpload("E:\\fAPP\\_20180814101019.png");logger.info(JSONArray.fromObject(strings,jsonConfig).toString());logger.info(JSONObject.fromObject(fastFdsTest.getFileInfo(strings[1]),jsonConfig).toString());logger.info("downresult={}", fastFdsTest.fileServerDownload("group1", strings[1], "e:\\"+UUID.randomUUID()+"test.png"));logger.info("delresult={}", fastFdsTest.delete( strings[1]));}
}

java fastfds操作文件相关推荐

  1. 基于Java多线程操作文件案例分享

    场景描述:某文件夹下有很多文件和文件夹,要求读取出该文件夹下的所有文件,并将文本打印输出. 案例分析:假设该文件夹下有10个文件,那么我们将所有的文件遍历一遍打印输出就可以了.但如果有100个, 10 ...

  2. 【Java 编程】文件操作,文件内容的读写—数据流

    一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...

  3. java对文件的操作详解,java对各种文件的操作详解

    java中提供了io类库,可以轻松的用java实现对文件的各种操作.下面就来说一下如何用java来实现这些操作. 新建目录 //String URL = request.getRequestURI() ...

  4. java流与文件——操作文件

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--操作文件 的相关知识: 0.2) for source code, please vi ...

  5. java操作文件爱女_Java的IO操作---File类

    目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...

  6. java中有关文件流的操作

    文件流: 顾名思义,程序和文件打交道. 此时我们谈及的文件,值得是纯文本文件(txt的,不要使用Word,Excel), 在字节流中,暂时不要使用中文. FileInputStream: 文件的字节输 ...

  7. java创建读取文件_Java实现文件的创建、读取、写入操作-Fun言

    在日常的开发中,对文件的操作经常会有,所以今天教大家其中一种使用Java实现文件的创建.读取.写入操作 创建文件String filenameTemp = "D:\demo.txt" ...

  8. java中的文件处理io_Java的IO前奏曲:文件操作类之___File

    Java的IO前奏曲:文件操作类之___File 在java.io包里面,File类是唯一一个与文件本身操作有关的类,但是不会涉及到文件本身的具体内容(包括文件创建,删除等操作) 代码中的注释有详细说 ...

  9. 关于文件的INode与Java中的文件操作接口

    本文由作者周梁伟授权网易云社区发布. 近日做的项目中涉及到多进程共同读写多个文件的问题,文件名和最后修改时间都是可能会被频繁修改的,因而识别文件的唯一性会产生相当的麻烦,于是专门再学习了一下文件系统对 ...

  10. java io读取文件_java io读取文件操作代码实例

    这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个 ...

最新文章

  1. 【SQL 代码】Sql分页(自用)
  2. LeetCode Decode String(栈和递归)
  3. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介 | Launcher 应用快捷方式图标点击方法分析 )
  4. 世界读书日 阿里人是这样看书的?
  5. Cognos8.3权限体系[转]
  6. c++面向对象高级编程 学习十四 引用
  7. PAT1132: Cut Integer
  8. html 图片防盗链,配置.htaccess文件实现图片防盗链
  9. golang协程——通道channel阻塞
  10. 关于设计RPC框架的几个问题
  11. Intellij IDEA搭建vue-cli项目
  12. Python实战从入门到精通第八讲——字符串与文本2之合并拼接字符串
  13. 使用 Preload/Prefetch 优化
  14. C++11 Unicode 支持
  15. 红黄绿灯控制系统c语言,微机课设-红、黄、绿灯的控制系统设计.doc
  16. Vue - 引入集成 Tinymce 富文本编辑器(详细步骤及运行Demo),在 Vue.js 项目中使用富文本插件详细教程,附带超级详细的注释说明
  17. Matlab的对角阵、三角阵,矩阵变换:矩阵的转置、旋转、翻转、求逆、方阵的行列式、矩阵的秩求解
  18. 单片机攻略3——C51入门
  19. 一文读懂配置管理(CM)
  20. 题9.6:13个人围成一圈, 从第1个人开始顺序报号1, 2, 3。凡报到3者退出圈子。找出最后 留在圈子中的人原来的序号。要求用链表实现。

热门文章

  1. OpenCV计算图像PSNR峰值信噪比
  2. Windows系统如何删除远程桌面连接记录
  3. 联想智能云教室安win7_用“联想智能云教室”部署系统完成后,操作卡顿?
  4. 3d数字孪生工厂可视化三维建模平台
  5. 华为手机怎么移除云盘内容_华为手机网盘怎么样删除
  6. 从运营到高管,这是我总结的运营人能力地图
  7. 狼人杀微信娱乐游戏小程序源码
  8. PG目录操作封装——dirent一:postgresql-8.4.1\src\port\dirent.c
  9. ios html跳转appstore,H5跳转app store问题
  10. java并发增强工具_0318 guava并发工具