博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO流 之 RandomAccessFile 多线程下载
阅读量:5239 次
发布时间:2019-06-14

本文共 2452 字,大约阅读时间需要 8 分钟。

package com.randomaccessfile;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;public class TestThreadDownload{        public static void main(String[] args)    {        try        {            InputStream is=new FileInputStream(new File("res/raf/water.jpg"));            long contentLength=is.available();                        //创建一个跟要下载的文件同大小的文件            RandomAccessFile raf=new RandomAccessFile(new File("res/raf/new2.jpg"),"rw");            raf.setLength(contentLength);            raf.close();            //计算每段要下载多长            long earchLength=contentLength/5;            if(contentLength%5!=0)            {                earchLength++;            }            for(int i=0;i<5;i++)            {                new Thread(new DownloadThread(earchLength,i)).start();            }        } catch (FileNotFoundException e)        {            e.printStackTrace();        } catch (IOException e)        {            e.printStackTrace();        }    }        static class  DownloadThread implements Runnable    {        private long earchLength;        private int i;                public DownloadThread(long earchLength,int i)        {            this.earchLength=earchLength;            this.i=i;        }        @Override        public void run()        {            RandomAccessFile raf=null;            try            {                InputStream is=new FileInputStream(new File("res/raf/water.jpg"));                long skip=earchLength*i;                is.skip(skip);                raf = new RandomAccessFile(new File("res/raf/new2.jpg"),"rw");                raf.seek(skip);                int l=0;                System.out.println(raf.getFilePointer());                while((raf.getFilePointer()<=skip+earchLength)&&((l=is.read())!=-1))                {                    raf.write(l);                }            } catch (FileNotFoundException e)            {                e.printStackTrace();            } catch (IOException e)            {                e.printStackTrace();            }            finally            {                try                {                    raf.close();                } catch (IOException e)                {                    e.printStackTrace();                }            }                    }            }}

转载于:https://www.cnblogs.com/verejava/p/9227225.html

你可能感兴趣的文章
SpringBoot-thymeleaf
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
Android控件之GridView探究
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
snmpwalk命令常用方法总结
查看>>
网站产品设计
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Java IO流学习总结
查看>>