添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
try { String urlname = "http://219.147.83.244/695EF05563F718C926E37E9/03000A010059F1DF936FEE01233E8D995A1F67-7C9C-B63F-01CE-B5EA6252C012." + "mp4?ali_redirect_domain=vali-dns.cp31.o" + "tt.cibntv.net&ccode=0502&duration=62&expire=18000&" + "psid=2ac4ca6e7cf55a1435d242c356b17eb2&ups_client_ne" + "tip=222.168.152.224&ups_ts=1509081807&ups_userid=33" + "8784644&utid=341CEpTrYAECAd6of4zTB4VO&vid=XMzExMjY0OT" + "I1Mg%3D%3D&vkey=A4e308094022f9680ab63ca1076ed02c8"; URL url = new URL(urlname); URLConnection conn = url.openConnection(); int length = conn.getContentLength(); System.out.println("leng 博主自己写的一个多线程下载文件的小程序/** * 爬虫多线程下载文件 * * @author ChenYiFan * */public class Test { public static void main(String[] args) { try { String urlname = "http://219.147.83.244/695E
多线程 下载 文件的思路: 1.首先获取到文件的总大小 获取文件大小的方式是通过网络读取,getContentLength()即可获取到文件的大小,使用RandomAccessFile()支持随机访问 2.根据所准备的线程数据,计算每一个线程需要 下载 的文件的大小 上图显示 下载 400M的电影分4个线程 下载 ,每一个线程分别 下载 各自数据段中的数据,第一个线程 下载 0-100M,第二个 下载 100
import java .io.IOException; import java .io.InputStream; import java .io.RandomAccessFile; import java .net.HttpURLConnecti...
文章目录1.线程介绍2.线程间的通信3.BIO编程4.NIO编程4.1概述4.2 文件 IO4.2.1 概述和核心 API4.2.2 案例1. 往本地文件中写数据2. 从本地文件中读数据3.复制文件 1.线程介绍 线程是比进程更小的能独立运行的基本单位,它是进程的一部分,一个进程可以拥有多个线程,但至少要有一个线程,即主执行线程( Java 的 main 方法)。我们既可以编写单线程应用,也可以编写...
JAVA 实现 多线程 下载 大文件 开发中遇到一个问题, 下载 大文件到本地,导致等待时间过长,然后就寻找一个可以 多线程 下载 的办法,受 下载 软件启发,想到 多线程 下载 , 原理,首先查到这个文件的大小,然后根据线程数量去分配每个线程 下载 多大的片段,然后将每个线程的组合到一起,就是最终的 下载 文件。如图 然后就是代码时间, 必不可少的控制层 @Override @ApiOperation(value = " 多线程 获取大文件", httpMethod = "POST") @BodyValida
Java 中实现 多线程 压缩 视频 下载 可以使用` java .util.concurrent`包中线程池来管理线程,并使用` java .zip`包中的压缩相关类进行 视频 流的压缩。 以下是一个简单的示例代码,演示如何使用 多线程 压缩 视频 下载 : ``` java import java .*; import java .net.URL; import java .util.concurrent.ExecutorService; import java .util.concurrent.Executors; import java .util.zip.ZipEntry; import java .util.zip.ZipOutputStream; public class VideoDownloader { public static void main(String[] args) { // 定义 视频 流URL String videoUrl = "http://example.com/video.mp4"; // 创建线程池 ExecutorService executor = Executors.newFixedThreadPool(5); try { // 打开 视频 流 InputStream videoStream = new URL(videoUrl).openStream(); // 创建输出压缩文件 FileOutputStream zipFileOutput = new FileOutputStream("compressed_video.zip"); ZipOutputStream zipStream = new ZipOutputStream(zipFileOutput); // 启动 多线程 下载 和压缩 视频 流 for (int i = 0; i < 5; i++) { executor.execute(new VideoDownloaderTask(videoStream, zipStream, i)); // 等待所有任务完成 executor.shutdown(); while (!executor.isTerminated()) { // 等待线程池中的任务完成 // 关闭压缩流和 视频 流 zipStream.close(); videoStream.close(); System.out.println(" 视频 下载 和压缩完成!"); } catch (IOException e) { e.printStackTrace(); class VideoDownloaderTask implements Runnable { private InputStream videoStream; private ZipOutputStream zipStream; private int taskId; public VideoDownloaderTask(InputStream videoStream, ZipOutputStream zipStream, int taskId) { this.videoStream = videoStream; this.zipStream = zipStream; this.taskId = taskId; @Override public void run() { try { // 创建 视频 文件输出流 FileOutputStream videoOutput = new FileOutputStream("video_" + taskId + ".mp4"); // 缓冲区大小 byte[] buffer = new byte[1024]; int bytesRead; // 读取 视频 流并写入输出文件 while ((bytesRead = videoStream.read(buffer)) != -1) { videoOutput.write(buffer, 0, bytesRead); // 关闭 视频 文件输出流 videoOutput.close(); // 将输出文件添加到压缩流中 FileInputStream videoInput = new FileInputStream("video_" + taskId + ".mp4"); ZipEntry entry = new ZipEntry("video_" + taskId + ".mp4"); zipStream.putNextEntry(entry); while ((bytesRead = videoInput.read(buffer)) != -1) { zipStream.write(buffer, 0, bytesRead); // 关闭 视频 文件输入流 videoInput.close(); // 完成任务 System.out.println("任务 " + taskId + " 完成!"); } catch (IOException e) { e.printStackTrace(); 以上代码创建了一个线程池,然后使用多个线程从 视频 流中读取数据,并将数据写入单独的 视频 文件。接着,将每个 视频 文件添加到压缩流中,最终生成一个压缩文件。 请注意,上述示例只是一个简单的演示,实际应用中可能需要更多的错误处理和优化。另外,压缩 视频 流可能需要使用更特定的库或工具,具体取决于你要使用的 视频 编码格式和压缩算法。