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

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

?? virtualdirectory.java

?? 一個利用Java語言實現的ftp程序
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * 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.File;
import java.io.IOException;
import java.io.Serializable;
import java.io.Writer;
import java.util.Comparator;
import java.util.Date;
import java.util.StringTokenizer;

import util.DateUtils;


/**
 * This class is responsible to handle all virtual directory activities.
 *
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
 */
public
class VirtualDirectory implements Serializable {
    
    private final static String NEWLINE  = "\r\n";
    private final static String DELIM    = " ";
    
    private String mstRoot        = "/";
    private String mstCurrDir     = "/";
    
    private boolean mbWritePerm   = false;
    
    
    /**
     * Default constructor does nothing
     */
    public VirtualDirectory() {
    }
        
    /**
     * Set write permission.
     */
    public void setWritePermission(boolean perm) {
        mbWritePerm = perm;
    }
    
    /**
     * Set root directory. Root directory string will always
     * end with '/'.
     */
    public void setRootDirectory(File root) {

       if(root == null) {
           root = new File("/");
       }
       mstRoot = normalizeSeparateChar(root.getAbsolutePath());
        
       // if not ends with '/' - add one
       if(mstRoot.charAt(mstRoot.length()-1) != '/') {
           mstRoot = mstRoot + '/';
       }
       mstCurrDir = "/";
    }
    
    /**
     * Set root directory.
     */
    public void setRootDirectory(String root) throws IOException {
       mstRoot = normalizeSeparateChar(root);
        
       // if not ends with '/' - add one
       if(mstRoot.charAt(mstRoot.length()-1) != '/') {
           mstRoot = mstRoot + '/';
       }
       mstCurrDir = "/";
    }
    
    /**
     * Get write permission in this system
     */
    public boolean getWritePermission() {
        return mbWritePerm;
    }
        
    /**
     * Get current working directory.
     */
    public String getCurrentDirectory() {
        return mstCurrDir;
    }
    
    
    /**
     * Get root directory.
     */
    public String getRootDirectory() {
        return mstRoot;
    }
    
    
    /**
     * Get physical name (wrt the machine root).
     */
    public String getPhysicalName(String virtualName) {
        virtualName = normalizeSeparateChar(virtualName);
        return replaceDots(virtualName);
    }
    
    
    /**
     * Get virtual name (wrt the virtual root). 
     * The return value will never end with '/' unless it is '/'. 
     */
    public String getAbsoluteName(String virtualName) {
        virtualName = normalizeSeparateChar(virtualName);
        String physicalName = replaceDots(virtualName);
        
        String absoluteName = physicalName.substring(mstRoot.length()-1).trim();
        return removeLastSlash(absoluteName);
    }
    
    
    /**
     * Get virtual name (wrt the virtual root). The virtual
     * name will never end with '/' unless it is '/'. 
     */
    public String getVirtualName(String physicalName) {
        physicalName = normalizeSeparateChar(physicalName);
        if (!physicalName.startsWith(mstRoot)) {
            return null;
        }
        
        String virtualName = physicalName.substring(mstRoot.length()-1).trim();
        return removeLastSlash(virtualName);
    }


    /**
     * Change directory. The current directory will never have '/'
     * at the end unless it is '/'.
     * @param dirName change the current working directory.
     * @return true if success
     */
    public boolean changeDirectory(String virtualDir) {

        String physcialDir = getPhysicalName(virtualDir);
        if (physcialDir.equals("")) {
            physcialDir = "/";
        }
        
        File dirFl = new File(physcialDir);
        if (dirFl.exists() && dirFl.isDirectory()) {
            mstCurrDir = physcialDir.substring(mstRoot.length() - 1).trim();
            mstCurrDir = removeLastSlash(mstCurrDir);
            return true;
        }
        
        return false;
    }

    
    /**
     * Check read permission.
     */
    public boolean hasReadPermission(String fileName, boolean bPhysical) {
        if(bPhysical) {
            fileName = normalizeSeparateChar(fileName);
        }
        else {
            fileName = getPhysicalName(fileName);
        }

        if(!fileName.startsWith(mstRoot)) {
            return false;
        }

        return new File(fileName).canRead();
    }
    
    
    /**
     * Chech file write/delete permission.
     */
    public boolean hasWritePermission(String fileName, boolean bPhysical) {

        // no write permission
        if(!mbWritePerm) {
            return false;
        }
        
        // if virtual name - get the physical name
        if(bPhysical) {
            fileName = normalizeSeparateChar(fileName);
        }
        else {
            fileName = getPhysicalName(fileName);
        }

        if(!fileName.startsWith(mstRoot)) {
            return false;
        }

        return new File(fileName).canWrite();
    }


    /**
     * Check file create permission.
     */
    public boolean hasCreatePermission(String fileName, boolean bPhysical) {
        
        // no write permission
        if(!mbWritePerm) {
            return false;
        }
        
        // if virtual name - get the physical name
        if(bPhysical) {
            fileName = normalizeSeparateChar(fileName);
        }
        else {
            fileName = getPhysicalName(fileName);
        }
        
        return fileName.startsWith(mstRoot);
    }
    
    
    /**
     * Print file list. Detail listing.
     * <pre>
     *   -a : display all (including hidden files)
     * </pre>
     * @return true if success
     */
    public boolean printList(String argument, Writer out) throws IOException {
        
        FileLister lister = new FileLister(argument);
        File[] flLst = lister.getFiles();
        if (flLst == null) {
            return false;
        }
        else {
            for(int i=0; i<flLst.length; i++) {
                if ( (!lister.isAll()) && flLst[i].isHidden() ) {
                    continue;
                }
                printLine(flLst[i], out);
                out.write(NEWLINE);
            }
            return true;
        }
    }
    
    
    /**
     * Print file list.
     * <pre>
     *   -l : detail listing
     *   -a : display all (including hidden files)
     * </pre>
     * @return true if success
     */
    public boolean printNList(String argument, Writer out) throws IOException {
        
        FileLister lister = new FileLister(argument);        
        File[] flLst = lister.getFiles();
        if (flLst == null) {
            return false;
        }
        else {
            for(int i=0; i<flLst.length; i++) {
                if ( (!lister.isAll()) && flLst[i].isHidden() ) {
                    continue;
                }
                if(lister.isDetail()) {
                    printLine(flLst[i], out);
                }
                else {
                    out.write(getName(flLst[i]));
                }
                out.write(NEWLINE);
            }
            return true;
        }
    }
    
    /**
     * Get file owner.
     */
    private String getOwner(File fl) {
        return "user";
    }
    
    
    /**
     * Get group name
     */
    private String getGroup(File fl) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
911精品产国品一二三产区| av亚洲精华国产精华精| 亚洲天堂精品视频| 欧美韩国日本一区| 国产精品视频你懂的| 国产午夜三级一区二区三| 久久久精品黄色| 国产亚洲精品免费| 国产精品人人做人人爽人人添| 中文字幕免费不卡在线| 亚洲色图欧美在线| 亚洲精品国产a久久久久久| 亚洲一二三区不卡| 日本欧美一区二区| 国产成人免费网站| 99久久精品99国产精品| 欧美日韩成人一区| 日韩欧美久久一区| 久久精品视频免费观看| 亚洲欧美日韩国产手机在线| 午夜精品久久久久久不卡8050| 日日骚欧美日韩| 国产一区二区福利| 色成年激情久久综合| 欧美老肥妇做.爰bbww视频| 日韩欧美一区中文| 中文字幕一区二区5566日韩| 性欧美大战久久久久久久久| 国产精品一区一区| 91久久精品午夜一区二区| 精品国内片67194| 亚洲欧洲国产专区| 日本欧美一区二区三区乱码| 99久久精品一区| 日韩一级黄色大片| 日韩一区在线免费观看| 美女被吸乳得到大胸91| 91丝袜美腿高跟国产极品老师 | 欧美精品一区二区三区久久久| 久久精品视频免费| 免费看欧美女人艹b| 99精品久久久久久| 精品少妇一区二区三区在线播放 | 欧美日韩在线亚洲一区蜜芽| 精品国产一二三区| 午夜视黄欧洲亚洲| av在线播放不卡| 久久亚洲捆绑美女| 日韩国产欧美在线播放| www.亚洲在线| 久久久精品综合| 香蕉乱码成人久久天堂爱免费| 成人精品一区二区三区四区 | 欧美优质美女网站| 欧美韩国一区二区| 国产精品中文字幕日韩精品| 欧美一级爆毛片| 午夜国产精品一区| 色爱区综合激月婷婷| 国产欧美一区二区精品久导航 | 亚洲bt欧美bt精品| 一道本成人在线| 中文字幕亚洲一区二区av在线| 久久99在线观看| 91精品国产色综合久久不卡蜜臀| 亚洲一级二级在线| 欧美网站一区二区| 无码av免费一区二区三区试看| 色婷婷精品久久二区二区蜜臀av| 亚洲欧美在线aaa| 一本高清dvd不卡在线观看| 中文在线一区二区| gogogo免费视频观看亚洲一| 中文av一区特黄| 成人免费视频免费观看| 欧美激情中文不卡| 99re这里只有精品首页| 亚洲欧洲韩国日本视频| 91美女片黄在线观看| 亚洲老妇xxxxxx| 色综合久久九月婷婷色综合| 亚洲制服丝袜av| 欧美精品在线一区二区| 日韩国产在线一| 欧美精品一区二区三区蜜桃视频 | 日韩欧美国产综合在线一区二区三区| 亚洲一区二区在线免费看| 欧美三级一区二区| 日本免费新一区视频 | 国产成人av一区二区| 欧美韩国日本综合| 91国在线观看| 男男成人高潮片免费网站| 精品久久国产字幕高潮| 国产精品一级在线| 中文字幕中文在线不卡住| 欧美色图第一页| 老司机免费视频一区二区三区| 久久精品亚洲国产奇米99| 91色在线porny| 天堂资源在线中文精品| 欧美精品一区二区三区四区| 国产99久久久精品| 亚洲综合丁香婷婷六月香| 日韩一级片网站| 91在线一区二区三区| 免费高清在线视频一区·| 欧美国产精品久久| 欧美丝袜自拍制服另类| 国产精品伊人色| 午夜日韩在线观看| 偷偷要91色婷婷| 中文字幕不卡一区| 欧美精品在线一区二区| av欧美精品.com| 蜜臀久久99精品久久久画质超高清 | 日韩精品中文字幕一区| 色琪琪一区二区三区亚洲区| 久久se精品一区精品二区| 亚洲欧美激情在线| 精品久久五月天| 欧美性videosxxxxx| 丁香婷婷综合色啪| 捆绑调教美女网站视频一区| 亚洲欧美另类久久久精品| 久久精品日韩一区二区三区| 制服丝袜av成人在线看| 91在线精品一区二区三区| 国产一区二区三区香蕉| 日韩综合在线视频| 亚洲主播在线播放| 综合激情成人伊人| 中文字幕+乱码+中文字幕一区| 日韩欧美中文字幕一区| 欧美日韩一二三| 色婷婷久久99综合精品jk白丝| 国产sm精品调教视频网站| 狂野欧美性猛交blacked| 石原莉奈在线亚洲三区| 国产精品一区二区无线| 人人精品人人爱| 水野朝阳av一区二区三区| 一区二区三区日韩精品视频| 国产精品乱码一区二区三区软件| 精品国产自在久精品国产| 欧美一区在线视频| 538prom精品视频线放| 欧美日韩视频一区二区| 欧美性猛交一区二区三区精品| 91香蕉视频在线| 色菇凉天天综合网| 欧美日韩国产欧美日美国产精品| 精品视频一区二区三区免费| 在线观看日韩电影| 欧美日韩三级一区| 欧美一区二区三区在| 日韩一区二区中文字幕| 精品国产免费一区二区三区四区 | 91在线视频免费91| 色综合 综合色| 色婷婷av一区二区三区gif| 色婷婷一区二区三区四区| 91成人网在线| 欧美精品第一页| 精品日韩成人av| 国产亚洲精品资源在线26u| 国产精品久久久久国产精品日日| 国产精品福利一区二区| 亚洲一区二区三区四区的| 五月天久久比比资源色| 久久精品国内一区二区三区| 国产成人小视频| 日本高清不卡视频| 日韩视频免费直播| 久久久久久久久久久久久久久99 | 成人精品视频一区二区三区尤物| 成人97人人超碰人人99| 在线观看日韩一区| 日韩一区二区在线看| 国产精品麻豆一区二区 | 日韩视频一区二区在线观看| 久久婷婷国产综合精品青草 | 日韩精品一区二区三区在线 | 亚洲人123区| 天堂在线亚洲视频| 福利电影一区二区| 欧美日韩精品一区二区三区四区 | 欧美自拍丝袜亚洲| 日韩免费观看2025年上映的电影| 国产情人综合久久777777| 亚洲一区二区黄色| 丁香激情综合国产| 91麻豆精品国产91久久久久| 国产精品国产三级国产普通话三级 | 91蜜桃视频在线| 亚洲精品一区二区三区蜜桃下载| 亚洲人成伊人成综合网小说| 精一区二区三区| 欧美性受xxxx黑人xyx| 国产日韩av一区|