亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? streamconnector.java

?? 一個(gè)利用Java語(yǔ)言實(shí)現(xiàn)的ftp程序
?? JAVA
字號(hào):
/*
 * Copyright (C) The Apache Software Foundation. All rights reserved.
 *
 * This software is published under the terms of the Apache Software License
 * version 1.1, a copy of which has been included with this distribution in
 * the LICENSE file.
 */
package io;

import java.io.InputStream;
import java.io.OutputStream;

/**
 * Connect one <code>java.io.InputStream</code> with a
 * <code>java.io.OutputStream</code>. 
 *
 * Features:
 * <ul>
 *   <li> Buffered transfer or not (default unbuffered).</li>
 *   <li> Threaded transfer or not (default false).</li>
 *   <li> Set transfer rate limit (default no limit).</li>
 *   <li> Stop transfer at any time.</li>
 *   <li> Get current byte transferred.</li>
 *   <li> Transfer notification</li>
 * </ul>
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
 */
public
class StreamConnector implements Runnable {
    
    private InputStream mInStream;
    private OutputStream mOutStream;
    
    private boolean mbThreaded    = false;
    private boolean mbBuffered    = false;
    private boolean mbStopRequest = false;
    
    private int  miTransferLimit  = 0;
    private long mlTransferSize   = 0; 
    
    private Exception mExp        = null;
    private Thread mConThread     = null; // stream conneector thread
    
    private StreamConnectorObserver mObserver = null;
    
    
    /**
     * Constructors
     * @param in pipe input
     * @param out pipe output
     */
    public StreamConnector(InputStream in, OutputStream out) {
        mInStream = in;
        mOutStream = out;
    }
    
    /**
     * Set stream connector observer. 
     */
    public synchronized void setObserver(StreamConnectorObserver obsr) {
        mObserver = obsr;
    }
    
    /**
     * Set buffered transferred property.
     */
    public void setIsBuffered(boolean buf) {
        mbBuffered = buf;
    } 
     
    /**
     * Get is buffered.
     */
    public boolean getIsBuffered() {
        return mbBuffered;
    }
     
    /**
     * Set threaded transfer property.
     */
    public void setIsThreaded(boolean thr) {
        mbThreaded = thr;
    }
     
    /**
     * Is the data transfer threaded?
     */
    public boolean getIsThreaded() {
        return mbThreaded;
    }
     
    /**
     * Get exception.
     */
    public Exception getException() {
        return mExp;
    }
     
    /**
     * Get transferred size in bytes.
     */
    public long getTransferredSize() {
        return mlTransferSize;
    }
    
    /**
     * Get transfer limit in bytes/second.
     */
    public int getMaxTransferRate() {
        return miTransferLimit;
    }
     
    /**
     * Set transfer limit - bytes/second.
     */
    public void setMaxTransferRate(int limit) {
        miTransferLimit = limit;
    }
     
    /**
     * Check exception status.
     */
    public boolean hasException() {
        return mExp != null;
    }
     
    /**
     * Stop data transfer.
     */
    public synchronized void stopTransfer() {
        mbStopRequest = true;
        if(mConThread != null) {
            mConThread.interrupt();
        }
        IoUtils.close(mInStream);
        IoUtils.close(mOutStream);
        mConThread = null;
        mInStream = null;
        mOutStream = null;
    }     
    
    /**
     * Is stopped?
     */
    public boolean isStopped() {
        return mbStopRequest;
    } 
     
    /**
     * Connect two streams.
     */
    public void connect() {
        
        // error test
        if(mbStopRequest) {
            throw new IllegalStateException("Data already transferred.");
        }
        if(mConThread != null) {
            throw new IllegalStateException("Streams already connected.");
        }
        
        // now connect
        if(mbThreaded) {
            new Thread(this).start();
        }
        else {
            run();
        }
    }
     
     
    /**
     * Transfer data from one stream to another.
     */
    public void run() {
        long startTime = System.currentTimeMillis();
        mConThread = Thread.currentThread();
        InputStream in = mInStream;
        OutputStream out = mOutStream;
        byte[] buff = new byte[4096];
        
        if(mbBuffered) {
            in = IoUtils.getBufferedInputStream(in);
            out = IoUtils.getBufferedOutputStream(out);
        }
            
        try {
           while(! (mbStopRequest || mConThread.isInterrupted()) ) {
               
               // check transfer rate
               if(miTransferLimit > 0) {
                   long interval = System.currentTimeMillis() - startTime;
                   
                   // prevent "divide by zero" exception
                   if(interval == 0) {
                       interval = 1;
                   }
                   
                   int rate = (int)((mlTransferSize*1000)/interval); 
                   if(rate > miTransferLimit) {
                       try { Thread.sleep(100); } catch(InterruptedException ex) {break;}
                       continue;
                   }
               }

               // read data
               int count = in.read(buff);
               if(count == -1) {
                   break;
               }
               
               // write data
               out.write(buff, 0, count);
               mlTransferSize += count;
               notifyObserver(count);
           }
           out.flush();
        }
        catch(Exception ex) {
            mExp = ex;
        }
        finally {
            synchronized(this) {
                mbStopRequest = true;
                IoUtils.close(in);
                IoUtils.close(out);
                notifyObserver(-1);
                mConThread = null;
            }
        }
    }
    
    /**
     * Notify the observer.
     * @param sz bytes transferred
     */
    private void notifyObserver(int sz) {
        StreamConnectorObserver observer = mObserver;
        if(observer != null) {
            observer.dataTransferred(sz); 
        }
    } 
    
    /**
     * Last defense to stop thread.
     */
    protected void finalize() throws Throwable {
        stopTransfer();
        super.finalize();
    } 
    
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av在线免费观看| 日av在线不卡| 色国产精品一区在线观看| 国产精品福利一区二区| 在线观看区一区二| 亚洲va国产va欧美va观看| 欧美日韩一卡二卡| 免费看日韩a级影片| 精品国免费一区二区三区| 国v精品久久久网| 亚洲柠檬福利资源导航| 欧美久久一二区| 黑人巨大精品欧美黑白配亚洲| 国产精品网友自拍| 欧美自拍丝袜亚洲| 久久成人18免费观看| 国产精品毛片久久久久久| 在线区一区二视频| 久久99久久精品欧美| 日韩毛片高清在线播放| 97aⅴ精品视频一二三区| 香蕉乱码成人久久天堂爱免费| 欧美大片一区二区三区| 成人免费高清在线| 天天亚洲美女在线视频| 久久久精品国产免费观看同学| 色综合视频在线观看| 美日韩一区二区| 综合中文字幕亚洲| 日韩一级片在线观看| 成人ar影院免费观看视频| 午夜久久久久久电影| 国产精品色呦呦| 欧美美女黄视频| 成人一道本在线| 美女一区二区视频| 亚洲精品乱码久久久久久黑人| 日韩欧美成人一区| 欧洲色大大久久| 欧美日本一区二区三区| thepron国产精品| 蜜桃视频免费观看一区| 亚洲在线观看免费| 国产精品网站在线| 欧美精品一区二区三区一线天视频| 91美女蜜桃在线| 国产在线精品不卡| 日韩**一区毛片| 亚洲图片欧美色图| 国产精品久久99| 久久日一线二线三线suv| 欧美精品欧美精品系列| 色综合久久中文综合久久97| 国产成人免费高清| 寂寞少妇一区二区三区| 日韩福利电影在线| 亚洲成人一区二区| 亚洲精品国产无套在线观| 国产精品天美传媒| 中文字幕av在线一区二区三区| 91精品婷婷国产综合久久性色| 91久久精品一区二区三| 成人av电影在线播放| 国产高清亚洲一区| 精品一区二区在线视频| 美女视频黄久久| 日韩不卡手机在线v区| 成人a级免费电影| 国产成人精品在线看| 国产成人在线电影| 国产成人免费视频一区| 国产白丝精品91爽爽久久| 国产成人在线视频网站| 国产精品99久久久| 国产精品资源在线看| 国产福利不卡视频| 成人开心网精品视频| 成a人片亚洲日本久久| 成人avav在线| 色综合欧美在线视频区| 欧洲精品视频在线观看| 欧美日韩视频一区二区| 欧美日韩国产小视频在线观看| 欧美特级限制片免费在线观看| 欧美天堂一区二区三区| 欧美日韩一区小说| 欧美一二三区在线观看| 精品国产乱码久久久久久牛牛| 精品国产1区2区3区| 国产午夜精品在线观看| 国产拍揄自揄精品视频麻豆| 国产精品日产欧美久久久久| 一色桃子久久精品亚洲| 一区二区三区成人| 日韩国产一区二| 国产在线日韩欧美| 成人精品高清在线| 精品视频一区 二区 三区| 日韩一区二区免费高清| 国产欧美一区二区精品性色| 最近中文字幕一区二区三区| 亚洲va天堂va国产va久| 国产尤物一区二区在线| 99免费精品在线观看| 欧美日韩精品系列| 精品国产伦一区二区三区免费| 亚洲国产高清在线观看视频| 亚洲欧洲av色图| 日本欧美肥老太交大片| 国产高清精品网站| 在线免费一区三区| 精品国产一二三| 一区二区三区资源| 国产一区二区0| 色婷婷久久久亚洲一区二区三区| 欧美一二三区精品| 中文字幕视频一区| 蜜桃久久精品一区二区| 色就色 综合激情| 日韩视频一区二区在线观看| 亚洲色图色小说| 国产精品一区二区男女羞羞无遮挡| 91免费观看在线| 久久综合色之久久综合| 亚洲一区电影777| 国产精品伊人色| 91精品国产综合久久精品图片| 中文字幕av不卡| 麻豆免费精品视频| 在线观看欧美日本| 国产欧美中文在线| 老司机午夜精品| 欧美亚洲一区二区三区四区| 国产精品久久久久久久久免费丝袜| 日韩成人免费电影| 欧美系列亚洲系列| 亚洲欧洲精品一区二区三区 | 欧美精品三级日韩久久| 国产精品免费丝袜| 国产一区二区电影| 91精品国产色综合久久ai换脸| 亚洲人成电影网站色mp4| 国产不卡一区视频| 久久亚洲一级片| 蜜臀91精品一区二区三区| 欧美三级午夜理伦三级中视频| 国产精品女同互慰在线看 | 国产一区二区三区日韩| 3d动漫精品啪啪1区2区免费| 亚洲精品欧美激情| 色综合欧美在线| 亚洲视频每日更新| 成人国产精品视频| 国产精品色在线观看| 丁香一区二区三区| 亚洲国产精品成人综合| 国产久卡久卡久卡久卡视频精品| 日韩亚洲欧美在线| 蜜臂av日日欢夜夜爽一区| 欧美一卡二卡在线| 天堂成人国产精品一区| 欧美日韩国产影片| 天天操天天色综合| 欧美亚洲国产bt| 五月天国产精品| 欧美一级欧美三级在线观看| 日本一区中文字幕| 日韩西西人体444www| 看国产成人h片视频| 欧美不卡一区二区三区| 精品一区精品二区高清| 久久久影视传媒| 成人高清视频在线| 综合久久综合久久| 色综合久久中文字幕综合网| 亚洲自拍另类综合| 欧美日韩黄视频| 奇米精品一区二区三区在线观看| 欧美大片在线观看一区二区| 精品一区二区在线免费观看| 国产女主播视频一区二区| 92国产精品观看| 亚洲国产欧美日韩另类综合| 555夜色666亚洲国产免| 极品少妇一区二区| 国产精品色眯眯| 色8久久人人97超碰香蕉987| 视频在线观看国产精品| 337p粉嫩大胆色噜噜噜噜亚洲| 高清在线不卡av| 亚洲综合色在线| 日韩欧美激情在线| 成人动漫在线一区| 亚洲大片免费看| 久久毛片高清国产| 色综合久久天天| 久久国产精品色婷婷| 一区在线观看视频| 欧美一区二区福利在线| 国产91高潮流白浆在线麻豆|