# raf **Repository Path**: lsrztt/raf ## Basic Information - **Project Name**: raf - **Description**: 使用Java RandomAccessFile 多线程试下的分段下载网络/本地文,使用Swing写了简易的界面简化操作,实测2s 10G,更高没有测试 测试地址为https://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-Everything.iso,有兴趣可以下载用来玩玩 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-07-02 - **Last Updated**: 2021-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # raf #### 介绍 使用Java RandomAccessFile 多线程试下的分段下载网络/本地文,使用Swing写了简易的界面简化操作,实测2s 10G,更高没有测试 测试地址为https://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-Everything.iso,有兴趣可以下载用来玩玩 #### 软件架构 软件架构说明 1. RandomAccessFile Java提供的可指定指针位置文件读写API类库 2. Thread 多线程指针读取 3. Http Range http1.1以后提供的 分段读取 客户端请求时 请求头带上 Range=bytes0- 服务端返回 Accept-Ranges=bytes 表示接收分段下载 4. Swing 虽然已淘汰,但写一些小工具还是不错的,就是头有点凉,布局真让人头疼,没做布局 5. HttpURLConnection 作为访问HttpAPI(原生可不依赖于其他第三方类库) 获取类容长度不要使用HttpURLConnection.getContentLength() 尽量使用conn.getHeaderField("Content-Length") 获取内容长度被坑了,明明有Content-Length 却获取不到,很是奇怪,具体没有详细了解,有时间仔细看看API去 #### 安装教程 1. 指定主启动类 cn.gaosiy.raf.core.AppRunner 2. 导出为jar 3. java -jar jarName #### 使用说明 如不想编译,可直接使用source下的raf.jar #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)