Java IO流 之 RandomAccessFile 多線程下載

來源:互聯網
上載者:User

標籤:一個   water   thread   ide   rac   get   TE   etl   rri   

http://www.verejava.com/?id=16994721196019

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();                }            }                    }            }}

http://www.verejava.com/?id=16994721196019

Java IO流 之 RandomAccessFile 多線程下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.