FastDFS(JavaAPI访问)

添加依赖:

        <dependency>
            <groupId>cn.bestwu</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

第一个依赖是主体内容,后面两个依赖是代码中后面会用到的一些工具包。

配置文件: 

使用API操作连接FastDFS时需要加载一个配置文件,文件后缀名必须为.conf,例如:fdfs.conf   配置文件在resource目录下的任何位置创建。

配置文件内容:

#配置连接超时
connect_timeout=10
#网络工作的超时时间,一次连接的超时时长
network_timeout=30
#连接中的使用字符集,在连接中会传递各种各样的字节信息,
#字节信息如果需要转换为字符,那需要一个字符集进行解码编码的过程
charset=UTF-8
#tracker的http协议端口,
#和FastDFS的tracker服务器的配置文件tracker.conf中的http.server.port一致
http.tracker_http_port=8080
#tracker服务器所在地址
tracker_server=192.168.8.6:22122

5个配置项。 

创建一个类连接FastDFS:  

public class TestInitClient{
    public static void main(String[] args){
        try{
            //加载配置文件
            ClientGlobal.init("src/main/java/resources/test/fdfs.conf");
            //tracker客户端对象
            TrackerClient trackerClient=new TrackerClient();
            //tracker服务端对象
            TrackerServer trackerServer=trackerClient.getConnection();
            //storage服务端对象
            StorageServer storageServer=trackerClient.getStoreStorage(trackerServer);
            //最终需要的对象,即storage客户端对象
            StorageClient storageClient=new StorageClient(trackerServer,storageServer);
            System.out.println("storageClient:"+storageClient);
        }catch(IOException e){
            e.printStackTrace();
        }catch(MyException e){
            e.printStackTrace();
        }
        
    }
}

 【手写版】

public class TestInitClient {
    public static void main(String[] args) {
        //创建FastDFS Java客户端
        //加载客户端配置文件,就是刚定义的conf配置文件
        try{
            ClientGlobal.init("src/main/resources/test/fdfs.conf");
            //创建Tracker服务器的客户端连接对象,无参构造其中默认会调用一个有参构造
            //new TrackerClient(TrackerGlobal.g_tracker_group),绑定tracker服务器的ip和端号
            TrackerClient trackerClient=new TrackerClient();
            //通过Tracker客户端对象获取Tracker服务端对象
            TrackerServer trackerServer=trackerClient.getConnection();
            //通过tracker客户端和服务端对象获取storage服务端对象
            StorageServer storageServer=trackerClient.getStoreStorage(trackerServer);
            //通过tracker服务端对象和storage服务端对象实现文件上传下载
            //最终使用的对象
            StorageClient storageClient=new StorageClient(trackerServer,storageServer);
            System.out.println("storageClient :"+storageClient);
        }catch(IOException e){//配置文件找不到之类的
            e.printStackTrace();
        }catch (MyException e){//FastDFS的java客户端API自定义的异常
            //如tracker服务器连接错误,或者storage服务器连接错误
        }
    }
}

【复制版】

使用properties配置文(不喜欢conf配置文件的可以看看):fdfs.properties

#连接超时
fastdfs.connect_timeout_in_seconds=10
#网络超时
fastdfs.network_timeout_in_seconds=30
#连接的字符集
fastdfs.charset=UTF-8
#tracker服务器中配置文件中的http端口配置
fastdfs.http_tracker_http_port=8080
#tracker服务器ip和端口(servers不是server)
fastdfs.tracker_servers=192.168.8.6:22122

 通过properties配置文件来创建客户端连接:

public class TestInitClientByProperties {
    public static void main(String[] args) {
        //加载配置文件
        Properties properties=new Properties();
        try {
            properties.load(TestInitClientByProperties.class.getClassLoader().getResourceAsStream("test/fdfs.properties"));

        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("properties配置文件加载错误");
            return;
        }
        //通过ClientGlobal加载配置内容
        try {
            ClientGlobal.initByProperties(properties);
            TrackerClient trackerClient=new TrackerClient();
            TrackerServer trackerServer=trackerClient.getConnection();
            StorageServer storageServer=trackerClient.getStoreStorage(trackerServer);
            StorageClient storageClient=new StorageClient(trackerServer,storageServer);
            System.out.println("storageClient: "+storageClient);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: FastDFS是一个开源的轻量级分布式文件系统,用于分布式存储和管理大规模的文件。在使用FastDFS进行断点续传下载时,可以结合Java语言来实现。 在Java中,首先需要引入FastDFS的相关依赖库,比如fastdfs-client-java。然后,通过FastDFSJava API来实现断点续传下载的功能。 具体实现步骤如下: 1. 首先,需要获取待下载文件的文件元数据,如文件名、文件大小等信息,可以通过FastDFSAPI来获取。 2. 然后,根据文件元数据和下载路径,创建一个本地文件,用于存储下载的文件内容。 3. 接着,通过FastDFSAPI,通过指定的文件偏移量和下载长度来读取文件内容,将文件内容写入到本地文件中。同时,记录已下载的文件长度。 4. 当下载完成时,关闭与FastDFS的连接,并完成断点续传下载的过程。 需要注意的是,在断点续传下载前,需要判断是否已有部分文件已经下载完成,如果是,则可以根据已有的文件长度来设置文件偏移量和下载长度,从而进行断点续传下载。 总而言之,Java可以通过调用FastDFSAPI来实现断点续传下载功能,具体的实现步骤包括获取文件元数据、创建本地文件、通过指定的偏移量和长度读取文件内容,并将内容写入到本地文件中,最后完成断点续传下载过程。 ### 回答2: FastDFS是一个开源的轻量级分布式文件系统,它主要用于解决大规模数据存储和分布式文件访问的问题。FastDFS完整的文件传输过程可以分为文件上传和文件下载两部分。而断点续传则是指在网络异常或用户主动中断的情况下,能够恢复之前未传输完成的文件传输。 在Java中实现FastDFS的断点续传下载可以通过以下步骤: 1. 首先,通过FastDFS提供的Java客户端API,连接到FastDFS服务器。 2. 检查本地文件系统,判断是否存在已下载的临时文件。 3. 如果存在未下载完成的临时文件,获取已下载字节数并记录。 4. 通过FastDFS的文件下载API,设置偏移量为已下载的字节数。 5. 将下载的文件片段追加到本地临时文件中,并更新已下载的字节数。 6. 重复步骤4和步骤5,直到下载完成。 7. 删除临时文件并保存完整的文件。 在每次下载时,需要记录已下载的字节数,以便下次下载时可以根据该偏移量进行断点续传。可以将该信息保存在本地文件系统的临时文件中,或者通过数据库等方式进行持久化存储。 断点续传的实现可以大大提高文件传输的可靠性和效率,特别是在网络不稳定或文件较大的情况下。通过合理地记录已下载的字节数,并使下载从中断处继续,可以减少重复传输的数据,节省带宽和时间。 总之,使用Java可以通过FastDFSAPI实现断点续传下载。这样可以提高文件传输的可靠性和效率,为用户提供更良好的体验。 ### 回答3: FastDFS是一个分布式文件存储系统,它采用了文件切割、分布式存储和文件索引等技术,可以高效地存储和管理大规模的文件。在Java中,可以使用FastDFS提供的客户端API来实现断点续传下载功能。 在实现断点续传下载的过程中,首先需要通过FastDFS客户端API获取文件的元数据信息,包括文件大小和分片信息等。然后,根据已下载的文件大小,确定接下来要从哪个分片开始下载。 接下来,使用Java的IO流技术将分片数据写入本地文件中。为了实现断点续传功能,可以通过设置HTTP请求的Range头字段来指定下载的起始位置,从而避免重复下载已经下载过的部分。 在下载过程中,可以采用多线程的方式进行并发下载,提高下载速度。可以将文件分成多个连续的范围,并为每个范围创建一个线程进行下载。在每个线程下载完成后,将下载的数据写入本地文件中相应的位置。 另外,在断点续传下载的过程中,需要实时记录已下载的文件大小,并及时保存断点信息。这样,当下载中断时,下次继续下载时可以根据已下载的文件大小和分片信息来确定需要继续下载的位置,从而实现断点续传的功能。 总之,通过使用FastDFS的客户端APIJava的IO流技术,可以实现断点续传下载功能。通过合理地划分分片和利用多线程进行并发下载,可以提高下载速度。并通过记录已下载的文件大小和断点信息,实现下载中断后的断点续传。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_47295812

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值