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

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

?? vmsfileparser.java

?? java編寫的非常詳盡的基于ftp協議的上傳下載源碼
?? JAVA
字號:
/**
 *
 *  edtFTPj
 * 
 *  Copyright (C) 2000-2004 Enterprise Distributed Technologies Ltd
 *
 *  www.enterprisedt.com
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Bug fixes, suggestions and comments should be should posted on 
 *  http://www.enterprisedt.com/forums/index.php
 *
 *  Change Log:
 *
 *
 */
package com.enterprisedt.net.ftp;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 *  Represents a remote OpenVMS file parser. Thanks to Jason Schultz for contributing
 *  significantly to this class 
 *
 *  @author      Bruce Blackshaw
 *  @version     $Revision: 1.5 $
 */
public class VMSFileParser extends FTPFileParser {

    /**
     *  Revision control id
     */
    public static String cvsId = "@(#)$Id: VMSFileParser.java,v 1.5 2007-10-12 05:20:44 bruceb Exp $";
             
    /**
     * Directory field
     */
    private final static String DIR = ".DIR";
    
    /**
     * Directory line
     */
    private final static String HDR = "Directory";
    
    /**
     * Total line
     */
    private final static String TOTAL = "Total";
    
    /**
     * Blocksize for calculating file sizes
     */
    private final int DEFAULT_BLOCKSIZE = 512*1024;
    
    /**
     * Number of expected fields
     */
    private final static int MIN_EXPECTED_FIELD_COUNT = 4;
    
    /**
     * Date formatter
     */
    private SimpleDateFormat formatter1;
    
    /**
     * Date formatter
     */
    private SimpleDateFormat formatter2;
    
    /**
     * Is the version returned with the name?
     */
    private boolean versionInName = false;

    /**
     * Block size used to calculate size
     */
    private int blocksize = DEFAULT_BLOCKSIZE;
    
    /**
     * Constructor
     */
    public VMSFileParser() {
         setLocale(Locale.getDefault());
    }
    
    
    /**
     * Get the VMS blocksize, used for calculating file 
     * sizes
     * 
     * @return blocksize
     */
    public int getBlocksize() {
        return blocksize;
    }

    /**
     * Set the VMS blocksize, used for calculating file 
     * sizes. This might need to be changed if unexpected file
     * sizes are being returned for VMS files.
     * 
     * @param blocksize   new blocksize
     */
    public void setBlocksize(int blocksize) {
        this.blocksize = blocksize;
    }


    /**
     * Get the property that controls whether or not the version
     * number is returned as part of the filename, e.g. FILENAME.TXT;2
     * would be returned as is if this property is true, or FILENAME.TXT
     * if it is false.
     * 
     * @return true if version to be returned as part of the filename
     */
    public boolean isVersionInName() {
        return versionInName;
    }


    /**
     * Set the property that controls whether or not the version
     * number is returned as part of the filename, e.g. FILENAME.TXT;2
     * would be returned as is if this property is true, or FILENAME.TXT
     * if it is false.
     * 
     * @param versionInName     true if version to be returned as part of the filename
     */
    public void setVersionInName(boolean versionInName) {
        this.versionInName = versionInName;
    }

    /**
     * Parse server supplied string
     *
     * OUTPUT: <begin>
     * 
     * Directory <dir>
     *  
     * <filename>
     *      used/allocated  dd-MMM-yyyy HH:mm:ss [unknown]      (PERMS)
     * <filename>
     *      used/allocated  dd-MMM-yyyy HH:mm:ss [unknown]      (PERMS)
     * ...
     * 
     * Total of <> files, <>/<> blocks
     *
     * @param raw   raw string to parse
     */
    public FTPFile parse(String raw) throws ParseException {
        String[] fields = split(raw);
        
        // skip blank lines
        if(fields.length <= 0)
        	return null;
        // skip line which lists Directory
        if (fields.length >= 2 && fields[0].compareTo(HDR) == 0)
        	return null;
        // skip line which lists Total
        if (fields.length > 0 && fields[0].compareTo(TOTAL) == 0)
        	return null;
        // probably the remainder of a listing on 2nd line
        if (fields.length < MIN_EXPECTED_FIELD_COUNT) 
            return null; 
        
        // first field is name
        String name = fields[0];
        
        // make sure it is the name (ends with ';<INT>')
        int semiPos = name.lastIndexOf(';');
        // check for ;
        if(semiPos <= 0) {
            throw new ParseException("File version number not found in name '" + name + "'", 0);
        }
        
        String nameNoVersion = name.substring(0, semiPos);
        
        // check for version after ;
        String afterSemi = name.substring(semiPos+1);
        
        try{
            Integer.parseInt(afterSemi);
            // didn't throw exception yet, must be number
            // we don't use it currently but we might in future
        }
        catch(NumberFormatException ex) {
            // don't worry about version number
        }        
        
        // test is dir
        boolean isDir = false;
        if (nameNoVersion.endsWith(DIR)) 
        {
            isDir = true;
            name = nameNoVersion.substring(0, nameNoVersion.length()-DIR.length());
        }
        
        if (!versionInName && !isDir) {
            name = nameNoVersion;
        }
        
        // 2nd field is size USED/ALLOCATED format
        int slashPos = fields[1].indexOf('/');
        String sizeUsed = fields[1];
        if (slashPos > 0)
            sizeUsed = fields[1].substring(0, slashPos);
        long size = Long.parseLong(sizeUsed) * blocksize;
        
        // 3 & 4 fields are date time
        Date lastModified = null;
        try {
            lastModified = formatter1.parse(fields[2] + " " + fields[3]);
        }
        catch (ParseException ex) {
            try {
                lastModified = formatter2.parse(fields[2] + " " + fields[3]);
            }
            catch (ParseException ex1) {
                if (!ignoreDateParseErrors)
                    throw ex;
            }
        }
        
        // 5th field is [group,owner]
        String group = null;
        String owner = null;
        if (fields.length >= 5) {     
            if (fields[4].charAt(0) == '[' && fields[4].charAt(fields[4].length()-1) == ']') {
                int commaPos = fields[4].indexOf(',');
                if (commaPos < 0) {
                    group = owner = fields[4]; // just make them the same, e.g. SYSTEM
                }
                else {
	                group = fields[4].substring(1, commaPos);
	                owner = fields[4].substring(commaPos+1, fields[4].length()-1);
                }
            }
        }
        
        // 6th field is permissions e.g. (RWED,RWED,RE,)
        String permissions = null;
        if (fields.length >= 6) {     
            if (fields[5].charAt(0) == '(' && fields[5].charAt(fields[5].length()-1) == ')') {
                permissions = fields[5].substring(1, fields[5].length()-2);
            }
        }
        
        FTPFile file = new FTPFile(raw, name, size, isDir, lastModified); 
        file.setGroup(group);
        file.setOwner(owner);
        file.setPermissions(permissions);
        return file;        
    }

    /* (non-Javadoc)
     * @see com.enterprisedt.net.ftp.FTPFileParser#setLocale(java.util.Locale)
     */
    public void setLocale(Locale locale) {
        formatter1 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss", locale);
        formatter2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm", locale);
    }
  
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
看片的网站亚洲| 一区二区三区色| 国产精品一二三四区| 欧美精品一区二区高清在线观看 | 久久一留热品黄| 久久99精品久久久| 国产三级精品三级| 97精品国产露脸对白| 亚洲国产婷婷综合在线精品| 欧美福利电影网| 国产麻豆精品theporn| 综合久久久久久| 777奇米成人网| 国产成人精品aa毛片| 亚洲免费大片在线观看| 91精品国产手机| 国产高清在线观看免费不卡| 亚洲资源中文字幕| 久久蜜桃av一区二区天堂| 99久久精品国产精品久久| 日韩成人一级大片| 国产亚洲综合性久久久影院| 91国在线观看| 精品一区二区免费| 亚洲国产欧美一区二区三区丁香婷| 884aa四虎影成人精品一区| 国产精品18久久久| 午夜国产不卡在线观看视频| 国产日韩欧美a| 在线综合+亚洲+欧美中文字幕| 高清beeg欧美| 欧美96一区二区免费视频| 中文字幕日韩精品一区| 欧美mv和日韩mv国产网站| 97久久人人超碰| 久久精品久久综合| 亚洲综合久久久| 国产欧美日韩久久| 日韩区在线观看| 欧洲亚洲国产日韩| www.亚洲色图| 国产一区视频导航| 日本不卡视频一二三区| 亚洲黄色av一区| 国产精品―色哟哟| 欧美mv和日韩mv的网站| 欧美精品欧美精品系列| 91国偷自产一区二区开放时间| 国产高清精品网站| 看国产成人h片视频| 午夜精品久久一牛影视| 亚洲精选在线视频| 国产精品国产a| 国产亚洲成aⅴ人片在线观看| 欧美精品乱码久久久久久| 91成人国产精品| 91麻豆swag| 91天堂素人约啪| 粉嫩一区二区三区性色av| 国产一区二区三区日韩 | 综合激情成人伊人| 中文字幕高清不卡| 国产欧美一区二区精品秋霞影院| 欧美精品一区二区不卡| 精品国一区二区三区| 26uuu成人网一区二区三区| 欧美日韩国产综合一区二区 | 国产成人在线色| 国产精品一区二区三区四区| 国产一区二区在线看| 激情深爱一区二区| 国产一区二区三区久久悠悠色av| 久久精品国产亚洲aⅴ| 免费一级片91| 久久99国产精品久久| 久久99国产精品免费| 精品亚洲欧美一区| 韩国女主播一区| 国产精品18久久久久| 福利一区二区在线观看| 99麻豆久久久国产精品免费优播| 不卡的av中国片| 日本道免费精品一区二区三区| 在线一区二区三区| 欧美浪妇xxxx高跟鞋交| 欧美不卡激情三级在线观看| 久久久蜜臀国产一区二区| 国产欧美日韩精品a在线观看| 中文字幕一区二区三区av| 一区二区三区中文字幕| 亚洲18色成人| 国产一区二区三区免费观看| 成人av网站在线| 在线观看网站黄不卡| 91精品国产综合久久久蜜臀图片| 精品国产乱码久久久久久蜜臀| 久久精品在线免费观看| 一区二区三区在线观看视频| 日韩精品亚洲专区| 国产精品66部| 91福利在线看| 精品福利一区二区三区免费视频| 中文在线一区二区| 五月天久久比比资源色| 国产精品自拍三区| 91福利视频久久久久| 精品国产露脸精彩对白| 综合色天天鬼久久鬼色| 亚洲国产wwwccc36天堂| 国产精品一卡二卡| 欧美三级三级三级| 国产欧美精品一区aⅴ影院| 一区二区三区四区中文字幕| 免费成人在线播放| 成人av在线网站| 91麻豆精品国产| 日韩一区在线免费观看| 美女脱光内衣内裤视频久久影院| voyeur盗摄精品| 日韩亚洲欧美综合| 亚洲乱码日产精品bd| 狠狠v欧美v日韩v亚洲ⅴ| 欧美亚洲尤物久久| 久久精品一区二区三区av| 亚洲一二三专区| www.久久久久久久久| 日韩免费成人网| 亚洲高清免费视频| 《视频一区视频二区| 国产一区二区在线观看免费| 午夜久久久久久电影| 国产乱妇无码大片在线观看| 欧美色综合久久| 亚洲色图20p| 国产91高潮流白浆在线麻豆| 欧美一级一区二区| 夜夜亚洲天天久久| proumb性欧美在线观看| 精品国产区一区| 日本视频一区二区三区| 欧美亚洲一区二区在线观看| 国产精品久久久一区麻豆最新章节| 精品一区二区三区视频在线观看| 欧美色涩在线第一页| 亚洲色图一区二区| 99亚偷拍自图区亚洲| 欧美国产欧美亚州国产日韩mv天天看完整 | 久久国产综合精品| 欧美高清www午色夜在线视频| 亚洲精品自拍动漫在线| 97se亚洲国产综合自在线观| 国产精品欧美精品| 成人午夜免费视频| 亚洲国产高清在线观看视频| 激情小说亚洲一区| 久久精品在线免费观看| 国产精品亚洲一区二区三区妖精| www激情久久| 国内久久精品视频| 国产亚洲欧美色| 国产成人午夜精品影院观看视频| 久久久久久久久99精品| 国产另类ts人妖一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 奇米影视在线99精品| 日韩精品一区二区三区视频播放| 秋霞电影一区二区| 久久综合视频网| 成人免费黄色在线| 亚洲欧洲中文日韩久久av乱码| 色婷婷久久久久swag精品| 亚洲一区二区三区在线播放| 欧美性猛交一区二区三区精品| 亚洲第四色夜色| 日韩欧美久久一区| 国产成人精品三级| 亚洲色图在线播放| 8x8x8国产精品| 国产麻豆精品一区二区| 亚洲欧洲日本在线| 欧美性受极品xxxx喷水| 奇米四色…亚洲| 久久久久久电影| 色综合色综合色综合 | 免费美女久久99| 久久久精品国产免大香伊| 成人天堂资源www在线| 亚洲免费观看高清在线观看| 欧美在线免费观看亚洲| 免费欧美在线视频| 国产精品免费人成网站| 欧美日韩精品系列| 国产乱对白刺激视频不卡| 亚洲精品成a人| 日韩精品专区在线影院重磅| 国产成人免费网站| 亚洲国产精品久久不卡毛片| 久久综合色婷婷| 色94色欧美sute亚洲13| 麻豆精品在线看|