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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? archive.java

?? 這是架包java-unrar-0.2.jar的源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright (c) 2007 innoSysTec (R) GmbH, Germany. All rights reserved.
 * Original author: Edmund Wagner
 * Creation date: 22.05.2007
 *
 * Source: $HeadURL$
 * Last changed: $LastChangedDate$
 *
 * the unrar licence applies to all junrar source and binary distributions
 * you are not allowed to use this source to re-create the RAR compression
 * algorithm
 *
 * Here some html entities which can be used for escaping javadoc tags:
 * "&":  "&" or "&"
 * "<":  "&#060;" or "&lt;"
 * ">":  "&#062;" or "&gt;"
 * "@":  "&#064;"
 */
package de.innosystec.unrar;

import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import de.innosystec.unrar.exception.RarException;
import de.innosystec.unrar.exception.RarException.RarExceptionType;
import de.innosystec.unrar.io.IReadOnlyAccess;
import de.innosystec.unrar.io.ReadOnlyAccessFile;
import de.innosystec.unrar.rarfile.AVHeader;
import de.innosystec.unrar.rarfile.BaseBlock;
import de.innosystec.unrar.rarfile.BlockHeader;
import de.innosystec.unrar.rarfile.CommentHeader;
import de.innosystec.unrar.rarfile.EAHeader;
import de.innosystec.unrar.rarfile.EndArcHeader;
import de.innosystec.unrar.rarfile.FileHeader;
import de.innosystec.unrar.rarfile.MacInfoHeader;
import de.innosystec.unrar.rarfile.MainHeader;
import de.innosystec.unrar.rarfile.MarkHeader;
import de.innosystec.unrar.rarfile.ProtectHeader;
import de.innosystec.unrar.rarfile.SignHeader;
import de.innosystec.unrar.rarfile.SubBlockHeader;
import de.innosystec.unrar.rarfile.UnixOwnersHeader;
import de.innosystec.unrar.rarfile.UnrarHeadertype;
import de.innosystec.unrar.unpack.ComprDataIO;
import de.innosystec.unrar.unpack.Unpack;

/**
 * DOCUMENT ME
 *
 * @author $LastChangedBy$
 * @version $LastChangedRevision$
 */
public class Archive implements Closeable {
    
    private static Logger logger = Logger.getLogger(Archive.class.getName());

    private File file;

    private IReadOnlyAccess rof;

    private final UnrarCallback unrarCallback;

    private final ComprDataIO dataIO;

    private final List<BaseBlock> headers = new ArrayList<BaseBlock>();

    private MarkHeader markHead = null;

    private MainHeader newMhd = null;
    
    private EndArcHeader endHeader = null;
    
    private Unpack unpack;

    /** Archive data CRC. */
    private long arcDataCRC = 0xffffffff;

    private int currentHeaderIndex;

    private boolean encrypted = false;

    private int sfxSize = 0;

    /** Size of packed data in current file. */
    private long totalPackedSize = 0L;

    /** Number of bytes of compressed data read from current file. */
    private long totalPackedRead = 0L;

    public Archive(File file) throws RarException, IOException {
        this(file, null);
    }

    /**
     * create a new archive object using the given file
     * @param file the file to extract
     * @throws RarException
     */
    public Archive(File file, UnrarCallback unrarCallback)
            throws RarException, IOException {
        setFile(file);
        this.unrarCallback = unrarCallback;
        dataIO = new ComprDataIO(this);
    }

    public File getFile() {
        return file;
    }

    void setFile(File file) throws IOException {
        this.file = file;
        totalPackedSize = 0L;
        totalPackedRead = 0L;
        close();
        rof = new ReadOnlyAccessFile(file);
        try {
            readHeaders();
        }
        catch (Exception e) {
            logger.log(Level.WARNING,
                    "exception in archive constructor maybe file is encrypted " +
                    "or currupt", e);
            //ignore exceptions to allow exraction of working files in
            //corrupt archive
        }
        // Calculate size of packed data
        for (BaseBlock block : headers) {
            if (block.getHeaderType() == UnrarHeadertype.FileHeader) {
                totalPackedSize += ((FileHeader)block).getFullPackSize();
            }
        }
        if (unrarCallback != null) {
            unrarCallback.volumeProgressChanged(totalPackedRead,
                    totalPackedSize);
        }
    }

    public void bytesReadRead(int count) {
        if (count > 0) {
            totalPackedRead += count;
            if (unrarCallback != null) {
                unrarCallback.volumeProgressChanged(totalPackedRead,
                        totalPackedSize);
            }
        }
    }

    public IReadOnlyAccess getRof() {
        return rof;
    }
    
    /**
	 * @return returns all file headers of the archive
	 */
	public List<FileHeader> getFileHeaders(){
		List<FileHeader> list = new ArrayList<FileHeader>();
		for (BaseBlock block: headers) {
			if(block.getHeaderType().equals(UnrarHeadertype.FileHeader)){
				list.add((FileHeader)block);
			}
		}
		return list;
	}
    
    public FileHeader nextFileHeader() {
        int n = headers.size();
        while (currentHeaderIndex < n) {
            BaseBlock block = headers.get(currentHeaderIndex++);
            if (block.getHeaderType() == UnrarHeadertype.FileHeader) {
                return (FileHeader)block;
            }
        }
        return null;
    }

    public UnrarCallback getUnrarCallback() {
        return unrarCallback;
    }

    /**
     *
     * @return whether the archive is encrypted
     */
    public boolean isEncrypted() {
        if(newMhd!=null){
            return newMhd.isEncrypted();
        }else{
            throw new NullPointerException("mainheader is null");
        }
    }
    
    /**
     * Read the headers of the archive
     * @throws RarException
     */
    private void readHeaders() throws IOException, RarException{
        markHead = null;
        newMhd = null;
        endHeader = null;
        headers.clear();
        currentHeaderIndex = 0;
        int toRead = 0;
        
        long fileLength = this.file.length();

        while(true){
            int size = 0;
            long newpos = 0;
            byte[] baseBlockBuffer =new byte[BaseBlock.BaseBlockSize];
            
            long position = rof.getPosition();
            
            // Weird, but is trying to read beyond the end of the file
            if (position >= fileLength) {
            	break;
            }
            
//            logger.info("\n--------reading header--------");
            size = rof.readFully(baseBlockBuffer, BaseBlock.BaseBlockSize);
            if (size == 0){
                break;
            }
            BaseBlock block = new BaseBlock(baseBlockBuffer);
            
            block.setPositionInFile(position);
            
            
            switch(block.getHeaderType()) {
                
                case MarkHeader:
                    markHead = new MarkHeader(block);
                    if (!markHead.isSignature()) {
                        throw new RarException(
                                RarException.RarExceptionType.badRarArchive);
                    }
                    headers.add(markHead);
//                    markHead.print();
                    break;
                    
                case MainHeader:
                    int mainHeaderSize = 0;
                    toRead = block.hasEncryptVersion() ?
                            MainHeader.mainHeaderSizeWithEnc :
                            MainHeader.mainHeaderSize;
                    byte[] mainbuff = new byte[toRead];
                    mainHeaderSize = rof.readFully(mainbuff, toRead);
                    MainHeader mainhead =new MainHeader(block,mainbuff);
                    headers.add(mainhead);
                    this.newMhd = mainhead;
                    if(newMhd.isEncrypted()){
                        throw new RarException(
                                RarExceptionType.rarEncryptedException);
                    }
//                    mainhead.print();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天做天天爱| 一区二区久久久| 蜜臀av一区二区在线免费观看| 色94色欧美sute亚洲13| 日韩毛片精品高清免费| a在线播放不卡| 国产精品久久二区二区| 国产福利一区二区三区在线视频| 久久亚洲春色中文字幕久久久| 男女激情视频一区| 欧美日韩一级大片网址| 五月天亚洲婷婷| 欧美一区二区三区影视| 日韩电影在线观看一区| 欧美一级二级三级蜜桃| 精品在线一区二区| 久久综合久久鬼色中文字| 国产在线国偷精品免费看| 久久久久久久网| 波多野结衣在线一区| 一区二区在线看| 欧美夫妻性生活| 毛片av一区二区| 国产午夜精品一区二区| 久久精品国产一区二区| 久久亚洲综合色| 99视频有精品| 亚洲成在线观看| 精品国产不卡一区二区三区| 成人手机电影网| 夜夜嗨av一区二区三区中文字幕 | 国产精品18久久久久久久网站| 国产性天天综合网| 欧美影视一区二区三区| 麻豆91精品91久久久的内涵| 国产亚洲欧美色| 欧美亚洲动漫另类| 韩国毛片一区二区三区| 亚洲精品自拍动漫在线| 欧美主播一区二区三区| 午夜成人免费电影| 久久精品夜色噜噜亚洲aⅴ| 一本到高清视频免费精品| 青青青伊人色综合久久| 中文子幕无线码一区tr| 欧美高清性hdvideosex| 国产东北露脸精品视频| 亚洲电影在线播放| 久久久精品国产免费观看同学| 91在线精品秘密一区二区| 日韩综合在线视频| 国产精品美女久久久久aⅴ| 欧美色视频一区| 国产一区二区精品在线观看| 亚洲综合区在线| www国产成人免费观看视频 深夜成人网| www.欧美日韩国产在线| 久久99精品国产.久久久久久| 中文字幕欧美一区| 久久久久久久久岛国免费| 欧美日韩精品电影| 99久久婷婷国产综合精品电影 | 国产在线国偷精品产拍免费yy| 亚洲欧美区自拍先锋| 久久久91精品国产一区二区精品| 欧美三级蜜桃2在线观看| 成人黄色av电影| 国内成人自拍视频| 午夜视黄欧洲亚洲| 自拍偷在线精品自拍偷无码专区| 精品国产乱子伦一区| 678五月天丁香亚洲综合网| 99在线精品免费| 国产成人免费视频一区| 久久国产精品无码网站| 亚洲国产欧美在线| 亚洲午夜电影在线观看| 日韩理论电影院| 中文字幕精品在线不卡| 国产无人区一区二区三区| 日韩一区二区在线看片| 欧美系列一区二区| 色婷婷精品久久二区二区蜜臀av | 偷拍一区二区三区四区| 亚洲欧美日韩小说| 亚洲日本va午夜在线电影| 国产精品久久久久影院| 国产精品每日更新| 日本一区二区三级电影在线观看| 久久无码av三级| 国产日韩欧美激情| 国产片一区二区| 国产亚洲精久久久久久| 久久综合999| 国产亚洲综合在线| 国产人伦精品一区二区| 国产精品成人午夜| 亚洲美女免费视频| 午夜婷婷国产麻豆精品| 性欧美大战久久久久久久久| 香蕉影视欧美成人| 免费精品99久久国产综合精品| 青青国产91久久久久久| 激情综合色播五月| 国产美女av一区二区三区| 国产成人精品一区二区三区四区| 国产精品亚洲午夜一区二区三区| 国产精品一线二线三线精华| 不卡影院免费观看| 欧美性videosxxxxx| 4438x成人网最大色成网站| 欧美一区二区在线视频| 精品国产亚洲在线| 亚洲欧洲另类国产综合| 一区二区三区在线观看网站| 日韩av电影免费观看高清完整版 | 亚洲电影一级黄| 久久精品国产99久久6| 国内外精品视频| 国产成人自拍网| 欧美综合亚洲图片综合区| 欧美一级理论片| 国产欧美日韩精品一区| 一区二区三区欧美日| 日产欧产美韩系列久久99| 国产美女娇喘av呻吟久久| 91网页版在线| 日韩欧美二区三区| 欧美精品一区二区久久婷婷| 国产精品久久久久影视| 天天av天天翘天天综合网色鬼国产| 毛片av中文字幕一区二区| 波多野结衣视频一区| 91精品国产综合久久久久久久久久| 久久午夜电影网| 亚洲一区二区欧美| 精品一二线国产| 91亚洲精品乱码久久久久久蜜桃 | 欧美一级日韩免费不卡| 中文字幕一区二区5566日韩| 三级影片在线观看欧美日韩一区二区| 美女视频免费一区| 国产mv日韩mv欧美| 久久人人爽人人爽| 欧美一区欧美二区| 亚洲一区二区三区国产| 成人黄色小视频| 日本一区二区三区久久久久久久久不| 免费在线观看一区二区三区| 欧美体内she精视频| 成人免费在线观看入口| 懂色av一区二区夜夜嗨| www亚洲一区| 极品少妇xxxx偷拍精品少妇| 日韩三级视频在线看| 日韩专区在线视频| 欧美日韩一卡二卡三卡| 亚洲h精品动漫在线观看| 日本伦理一区二区| 樱桃国产成人精品视频| 色噜噜狠狠成人网p站| 亚洲色图欧美激情| av欧美精品.com| 综合自拍亚洲综合图不卡区| 成人禁用看黄a在线| 中文字幕日韩精品一区 | 日本一区二区免费在线观看视频| 久久精品国产精品亚洲精品| 欧美一区二区视频在线观看2020| 偷拍日韩校园综合在线| 91精品国产一区二区| 麻豆传媒一区二区三区| 欧美变态口味重另类| 国产一区二区三区视频在线播放| 亚洲精品一区二区三区蜜桃下载| 久久99久久精品| 久久久美女毛片| 99久久精品免费观看| 亚洲精品视频在线看| 欧美日韩你懂得| 美女视频黄久久| 中文字幕精品一区二区三区精品| 国产精品亚洲专一区二区三区| 国产精品麻豆久久久| 日本精品一级二级| 无码av免费一区二区三区试看 | 99久久99久久精品免费观看 | 精品在线观看视频| 久久综合色天天久久综合图片| 国产精品亚洲专一区二区三区| 国产精品色在线观看| 在线一区二区三区四区五区| 日本中文一区二区三区| 精品国产一区a| 91视频xxxx| 免费成人在线网站| 国产欧美一区视频| 欧美色图在线观看| 国产激情视频一区二区在线观看| 中文字幕在线不卡一区二区三区|