/*
**FileSplitterFetch.java
*/
package NetFox;
import java.io.*;
import java.net.*;
public class FileSplitterFetch extends Thread {
String sURL; // File URL
long nStartPos; // File Snippet Start Position
long nEndPos; // File Snippet End Position
int nThreadID; // Thread's ID
boolean bDownOver = false; // Downing is over
boolean bStop = false; // Stop identical
FileAccess FileAccess = null; // File Access interface
public FileSplitterFetch(String sURL, String sName, long nStart, long nEnd,
int id) throws IOException {
this.sURL = sURL;
this.nStartPos = nStart;
this.nEndPos = nEnd;
nThreadID = id;
FileAccess = new FileAccess(sName, nStartPos);
}
public void run() {
while (nStartPos < nEndPos && !bStop) {
try {
URL url = new URL(sURL);
HttpURLConnection httpConnection = (HttpURLConnection) url
.openConnection();
httpConnection.setRequestProperty("User-Agent", "NetFox");
String sProperty = "bytes=" + nStartPos + "-";
httpConnection.setRequestProperty("RANGE", sProperty);
Utility.log(sProperty);
InputStream input = httpConnection.getInputStream();
// logResponseHead(httpConnection);
byte[] b = new byte[1024];
int nRead;
while ((nRead = input.read(b, 0, 1024)) > 0
&& nStartPos < nEndPos && !bStop) {
nStartPos += FileAccess.write(b, 0, nRead);
// if(nThreadID == 1)
// Utility.log("nStartPos = " + nStartPos + ", nEndPos = " +
// nEndPos);
}
Utility.log("Thread " + nThreadID + " is over!");
bDownOver = true;
// nPos = FileAccess.write (b,0,nRead);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 打印回应的头信息
public void logResponseHead(HttpURLConnection con) {
for (int i = 1;; i++) {
String header = con.getHeaderFieldKey(i);
if (header != null)
// responseHeaders.put(header,httpConnection.getHeaderField(header));
Utility.log(header + " : " + con.getHeaderField(header));
else
break;
}
}
public void splitterStop() {
bStop = true;
}
}
/*
**FileAccess.java
*/
package NetFox;
import java.io.*;
public class FileAccess implements Serializable {
private static final long serialVersionUID = 1L;
RandomAccessFile oSavedFile;
long nPos;
public FileAccess() throws IOException {
this("", 0);
}
public FileAccess(String sName, long nPos) throws IOException {
oSavedFile = new RandomAccessFile(sName, "rw");
this.nPos = nPos;
oSavedFile.seek(nPos);
}
public synchronized int write(byte[] b, int nStart, int nLen) {
int n = -1;
try {
oSavedFile.write(b, nStart, nLen);
n = nLen;
} catch (IOException e) {
e.printStackTrace();
}
return n;
}
}
分享到:
相关推荐
6. **性能优化**:由于文件操作可能涉及大量数据,因此系统需要进行性能优化,例如使用分块上传、断点续传、多线程下载等技术,提高用户体验。 7. **分布式设计**:大型的B/S网盘系统往往采用分布式设计,包括...
支持断点续传下载 支持CC字幕下载 支持互动视频下载 支持课程视频下载 支持相簿图片下载 开发技术 java swing,java awt 依赖包文件(可选) 链接:https://pan.baidu.com/s/18-zekCttaTwVY52_gA3btg?pwd=oadu ...
为了解决这一问题,提高下载效率和用户体验,本设计提出了一种基于Java语言的下载工具,支持断点续传和多线程下载等功能。 ##### 1.2 系统意义 本设计旨在开发一款高效稳定的下载工具,能够自动处理网络中断导致的...
需求分析则会列出用户期望的功能,如上传、下载、断点续传等。 系统详细设计部分可能详细列出了各个模块,如用户界面、连接管理、文件处理和错误处理等。FTP协议的介绍可能解释了如何通过Java实现FTP通信,包括登录...
10. **断点续传**:如果源码支持断点续传,它将保存当前下载的进度,当下载因某种原因中断后,可以从上次停止的地方继续下载,而不是重新开始。 在实际项目中,这样的下载工具可能还会考虑其他因素,如重试机制、...
2. **系统设计**:包括总体架构设计(如C/S或B/S结构)、模块划分、数据库设计等。 3. **算法选择**:可能涉及到文件分块、传输效率优化等方面的算法,比如使用CRC校验确保文件传输的完整性。 4. **实现细节**:...
在Java编程中,下载网络图片是一项常见的任务,尤其在数据抓取、网页爬虫或构建图形界面应用时。本教程将深入讲解如何使用Java...在实际开发中,还可以考虑添加异常处理、进度条显示、断点续传等功能,提升用户体验。
实现断点续传需要记录迁移过程中的各种状态信息,例如已经迁移完成的数据量和位置,以便在继续迁移时能够准确找到续传的位置。 文章中提到的B/S模式指的是基于浏览器和服务器的网络架构模式,它允许用户通过网页...
字符 `'2'` 在Java中会被视为其ASCII值(50),因此表达式 `2 + '2'` 的结果是整数类型,不能赋值给 `char` 类型变量。 - **c) `String s = "on" + 'one';`**: 正确。字符串和字符可以直接进行拼接操作。 - **d) `...
* Ctrl+Shift+B:在当前行设置断点或取消设置的断点。 * F11:调试最后一次执行的程序。 * Ctrl+F11:运行最后一次执行的程序。 * F5:跟踪到方法中。 * F6:单步执行程序。 * F7:执行完方法,返回到调用此...
Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...
本文主要介绍了如何利用Java技术栈构建一个基于B/S架构的网盘系统,旨在提供一个方便用户管理、存储个人文件以及分享文件的平台。主要涉及的技术包括WebUploader、SpringBoot和FastDFS。 1. **需求分析** - **...
腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与移动通讯终端等多种通讯方式相连。1999年2月,腾讯正式推出第一个即时通信软件——“腾讯QQ”,QQ...
2. **Ctrl + Shift + B**:启用/禁用断点。 ### 源代码 1. **Ctrl + Shift + U**:切换大小写。 2. **Alt + Shift + S**:源代码菜单,包含抽取方法、内联方法等重构操作。 ### 运行 1. **Ctrl + F11**:运行...
12. **调试**:F5、F6、F7分别用于单步进入、单步跳过和单步返回,F8继续执行,Ctrl+Shift+B添加/移除断点,Ctrl+D显示调试视图,Ctrl+F11运行上次启动,Ctrl+R运行到行,Ctrl+U执行。 13. **重构**:Alt+Shift+Z...
在系统中心处理部分,提到了数据采集和存储服务器模块,以及大文件断点续传的功能。此外,还讨论了系统管理软件的设计,如采用Java Web应用、B/S架构、MVC模型,并利用Tomcat服务器进行部署。 在系统调试阶段,论文...
在编程世界中,Java是一种广泛使用的面向对象的编程语言,而高效的编码往往离不开熟练的键盘操作,这就是快捷键的重要性所在。本篇文章将聚焦于Java开发中常用的Eclipse集成开发环境(IDE)的快捷键,这些快捷键能...
- 这些系统通常基于B/S结构,采用Java、JSP等技术开发。 - 关键点包括用户认证、事务处理、数据安全及用户体验设计。 以上是部分选题中涉及的关键知识点,实际开发中还需要结合具体需求和技术趋势进行深入研究和...
### Java中的快捷键大全:提升开发效率的关键技巧 在Java编程的世界里,掌握快捷键能够极大地提高工作效率,减少鼠标操作,让代码编写更加流畅。本文将深入解析一系列Java开发环境中常用的快捷键,涵盖代码提示、...