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

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

?? fileexplorer.java

?? 人民郵電出版社的《J2ME手機開發入門》全部源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * FileExplorer.java
 *
 * cmdCreateed on 2005年3月18日, 下午11:21
 */

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

import java.util.*;
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.io.file.*;

/**
 * 本程序實現了一個簡單的文件瀏覽器,主要具有以下功能:
 * <p>1、文件目錄瀏覽
 * <p>2、新建目錄或者文件
 * <p>3、刪除目錄或者文件
 * <p>4、復制文件
 * <p>5、剪切文件
 * <p>6、粘貼文件
 * <p>7、訪問目錄或者文件的屬性
 * <p>8、訪問文件的內容
 * @author Liu Bin
 */
public class FileExplorer implements CommandListener{
    //保存MIDlet實例
    static FileExplorerDemo feInstance = null;
    //保存MIDet的Display
    private Display display = null;
    
    private String currDirName;
    
    private Command cmdView = new Command("查看", Command.ITEM, 1);
    private Command cmdCreate = new Command("新建", Command.ITEM, 2);
    private Command cmdDelete = new Command("刪除", Command.ITEM, 3);
    private Command cmdCopy = new Command("復制", Command.ITEM, 4);
    private Command cmdPaste = new Command("粘貼", Command.ITEM, 5);
    private Command cmdCut = new Command("剪切", Command.ITEM, 5);
    private Command cmdProperty = new Command("屬性", Command.ITEM, 2);
    private Command cmdCreateOK = new Command("確定", Command.OK, 1);
    private Command cmdBack = new Command("返回", Command.BACK, 2);
    private Command cmdExit = new Command("退出", Command.EXIT, 3);
    
    //創建文件或者目錄時,用于輸入文件或者目錄的名字
    private TextField   nameInput;
    //在創建文件或者目錄時,用于選擇是創建文件還是創建目錄
    private ChoiceGroup typeInput;
    
    private final static String[] attrList = { "讀", "寫", "隱藏" };
    private final static String[] typeList = { "文件", "目錄" };
    
    
    /** 文件和目錄的圖標 */
    private Image dirIcon, fileIcon;
    private Image[] iconList;
    
    /** 表示父目錄的字符串 */
    private final static String FATHER_FOLDER = "..";
    
    /**
     * 表示根目錄的字符串
     */
    private final static String ROOT = "/";
    
    /** 規范中定義的,文件夾結尾的字符串 */
    private final static String FOLDER_END_STR = "/";
    
    /** 規范中定義的,文件夾結尾的字符 */
    private final static char   FOLDER_END_CHAR = '/';
    
    /** 可以訪問的文件最大長度 */
    public final static int MAX_FILE_LENGTH = 4096;
    
    /** 下面的三個變量用于復制和移動文件 */
    private String clipboardFileName=null;
    private String clipboardDir=null;
    private boolean cutFlag = false;
    
    /** 創建一個文件瀏覽器實例 */
    public FileExplorer(FileExplorerDemo instance) {
        feInstance = instance;
        display = Display.getDisplay(feInstance);
        
        //缺省的路徑為根目錄
        currDirName = ROOT;
        
        //裝載文件和目錄圖標
        try {
            dirIcon = Image.createImage("/folder.png");
        } catch (IOException e) {
            dirIcon = null;
        }
        try {
            fileIcon = Image.createImage("/file.png");
        } catch (IOException e) {
            fileIcon = null;
        }
        
        //設置ChoiceGroup的圖標
        iconList = new Image[] { fileIcon, dirIcon };
    }
    
    /**
     * 必須執行該方法后,文件瀏覽器才開始運行
     */
    public void open() {
        try {
            showCurrDir();      //顯示目錄和文件
        } catch (SecurityException e) {
            //如果有安全限制,則執行下面的代碼
            
            Alert alert = new Alert("錯誤",
                    "您沒有權限訪問這個受限制的API",
                    null, AlertType.ERROR);
            alert.setTimeout(Alert.FOREVER);
            Form form = new Form("不能訪問FileConnection");
            form.append(new StringItem(null,
                    "以當前的權限,MIDlet不能夠訪問受限制的API,請給MIDlet簽名"
                    + "或者運行在其他的安全域上"));
            form.addCommand(cmdExit);
            form.setCommandListener(this);
            Display.getDisplay(feInstance).setCurrent(alert, form);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    /**
     * 顯示當前目錄中的文件和目錄列表
     */
    void showCurrDir() {
        Enumeration e;
        FileConnection currDir = null;
        List browser;
        try {
            if (currDirName.equals(ROOT)) {
                e = FileSystemRegistry.listRoots();
                browser = new List(currDirName, List.IMPLICIT);
            } else {
                currDir = (FileConnection)Connector.open("file://localhost/" +
                        currDirName);
                e = currDir.list();
                browser = new List(currDirName, List.IMPLICIT);
                
                //如果不是根目錄,就添加父目錄
                browser.append(FATHER_FOLDER, dirIcon);
            }
            
            while (e.hasMoreElements()) {
                String fileName = (String)e.nextElement();
                if (fileName.charAt(fileName.length()-1) == FOLDER_END_CHAR) {
                    //增加目錄
                    browser.append(fileName, dirIcon);
                } else {
                    //增加文件
                    browser.append(fileName, fileIcon);
                }
            }
            
            browser.setSelectCommand(cmdView);
            //根目錄不能添加下面這些命令按鈕
            if (!ROOT.equals(currDirName)) {
                browser.addCommand(cmdCreate);
                browser.addCommand(cmdProperty);
                browser.addCommand(cmdDelete);
                browser.addCommand(cmdCopy);
                browser.addCommand(cmdCut);
                browser.addCommand(cmdPaste);
            }
            browser.addCommand(cmdExit);
            browser.setCommandListener(this);
            
            if (currDir != null) {
                currDir.close();
            }
            
            display.setCurrent(browser);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
    
    /**
     * 進入其他目錄
     * <p>
     * @param fileName 要進入的目錄
     */
    void traverseDirectory(String fileName) {
        if (currDirName.equals(ROOT)) {
            if (fileName.equals(FATHER_FOLDER)) {
                //確保根目錄為頂級目錄
                return;
            }
            currDirName = fileName;
        } else if (fileName.equals(FATHER_FOLDER)) {
            //返回上級目錄
            int i = currDirName.lastIndexOf(FOLDER_END_CHAR,
                    currDirName.length()-2);
            if (i != -1) {
                //獲得父ss目錄名字
                currDirName = currDirName.substring(0, i+1);
            } else {
                currDirName = ROOT;            //根目錄
            }
        } else {
            currDirName = currDirName + fileName;
        }
        showCurrDir();
    }
    
    /**
     * 在創建一個文件或者文件夾時,顯示一個窗口用于輸入名字和選擇類型
     */
    void showCreateFileForm() {
        Form frmCreateor = new Form("創建文件/文件夾");
        nameInput = new TextField("請輸入文件名", null, 256, TextField.ANY);
        typeInput = new ChoiceGroup("請選擇文件類型", Choice.EXCLUSIVE,
                typeList, iconList);
        frmCreateor.append(nameInput);
        frmCreateor.append(typeInput);
        frmCreateor.addCommand(cmdCreateOK);
        frmCreateor.addCommand(cmdBack);
        frmCreateor.addCommand(cmdExit);
        frmCreateor.setCommandListener(this);
        display.setCurrent(frmCreateor);
    }
    
    
    
    /**
     * 顯示選擇的文件內容
     * <p>
     * @param fileName 要顯示的文件名
     */
    void showFile(String fileName) {
        try {
            FileConnection fc = (FileConnection)
            Connector.open("file://localhost/" + currDirName + fileName);
            if (!fc.exists()) {
                throw new IOException("文件不存在");
            }
            
            InputStream fis = fc.openInputStream();
            byte[] b = new byte[MAX_FILE_LENGTH];
            
            int length = fis.read(b, 0, MAX_FILE_LENGTH);
            
            fis.close();
            fc.close();
            
            TextBox tbViewer = new TextBox("查看文件: " + fileName,
                    null, MAX_FILE_LENGTH,
                    TextField.ANY | TextField.UNEDITABLE);
            
            tbViewer.addCommand(cmdBack);
            tbViewer.addCommand(cmdExit);
            tbViewer.setCommandListener(this);
            
            if (length > 0) {
                tbViewer.setString(new String(b, 0, length));
            }
            
            display.setCurrent(tbViewer);
        } catch (Exception e) {
            Alert alert = new Alert("錯誤!",
                    "不能訪問目錄 " + currDirName +
                    " 中的文件 " + fileName +
                    "\n發生異常:" + e.toString(),
                    null,
                    AlertType.ERROR);
            alert.setTimeout(Alert.FOREVER);
            display.setCurrent(alert);
        }
        
    }
    
    /**
     * 顯示目錄或者文件的屬性
     * <p>
     * @param fileName 要查看屬性的文件或者目錄
     */
    void showPropertyerties(String fileName) {
        try {
            if (fileName.equals(FATHER_FOLDER)) {
                return;
            }
            
            FileConnection fc = (FileConnection)Connector.open(
                    "file://localhost/" + currDirName + fileName);
            
            if (!fc.exists()) {
                throw new IOException("文件不存在");
            }
            
            Form frmPropertys = new Form("cmdPropertyerties: " + fileName);
            ChoiceGroup attrs = new ChoiceGroup("屬性:", Choice.MULTIPLE,
                    attrList, null);
            
            attrs.setSelectedFlags(new boolean[] {fc.canRead(),
                    fc.canWrite(),
                    fc.isHidden()}
            );
            
            frmPropertys.append(new StringItem("位置:", currDirName));
            frmPropertys.append(new StringItem("類型:",
                    fc.isDirectory() ? "文件夾": "文件"));
            frmPropertys.append(new StringItem("文件大小:",
                    String.valueOf(fc.fileSize())));
            frmPropertys.append(new StringItem("修改時間:",
                    formatTime(fc.lastModified())));
            frmPropertys.append(attrs);
            
            frmPropertys.addCommand(cmdBack);
            frmPropertys.addCommand(cmdExit);
            frmPropertys.setCommandListener(this);
            
            fc.close();
            

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色2019综合网| 日韩中文字幕亚洲一区二区va在线| 欧美挠脚心视频网站| 99久久久久久| 91在线高清观看| 91蝌蚪porny成人天涯| 成人精品视频一区二区三区 | 在线视频欧美区| av不卡在线观看| 99精品一区二区三区| 91色|porny| 欧美日韩精品专区| 日韩欧美高清一区| xfplay精品久久| 中文字幕在线播放不卡一区| 日韩一区中文字幕| 亚洲6080在线| 激情文学综合网| 欧美日韩一级二级三级| 欧美日韩免费在线视频| 在线电影一区二区三区| 精品国产伦一区二区三区观看体验| 日韩高清电影一区| 国产又粗又猛又爽又黄91精品| 国产欧美精品一区二区色综合 | 国产高清在线精品| fc2成人免费人成在线观看播放 | 国产伦精品一区二区三区视频青涩 | 色嗨嗨av一区二区三区| 色女孩综合影院| 日韩欧美高清一区| 国产欧美一区二区在线| 亚洲精品免费一二三区| 免费不卡在线观看| 99精品一区二区| 欧美v日韩v国产v| 亚洲女同ⅹxx女同tv| 热久久国产精品| 色婷婷久久久综合中文字幕| 欧美一级久久久| 成人免费一区二区三区在线观看| 日韩欧美成人激情| 国产精品欧美一区喷水| 日韩精品一二三区| 91麻豆精品在线观看| 日韩免费观看高清完整版| 亚洲欧美福利一区二区| 国产黄色精品视频| 9191成人精品久久| 亚洲欧美视频一区| 国产精品一色哟哟哟| 在线观看91av| 亚洲一区二区三区精品在线| 国产成人在线视频播放| 在线电影国产精品| 亚洲黄色录像片| 91在线观看一区二区| 久久久99精品久久| 精品一区二区在线视频| 欧美日韩另类一区| 一区二区三区在线视频观看| 成人免费观看av| 久久久久久日产精品| 麻豆精品在线播放| 日韩欧美国产午夜精品| 日韩av一区二区三区| 欧美欧美欧美欧美首页| 一区二区三区色| 一本久久精品一区二区| 亚洲欧美一区二区三区极速播放 | 久久亚区不卡日本| 久久精品国产免费看久久精品| 日韩综合在线视频| 欧美日韩精品一区二区三区蜜桃 | 国产91精品一区二区麻豆亚洲| 国产一区二区三区精品欧美日韩一区二区三区 | 91日韩精品一区| 国产精品毛片久久久久久久 | 一本色道久久综合亚洲精品按摩 | 欧美日韩专区在线| 亚洲午夜激情网页| 欧美综合在线视频| 亚洲在线中文字幕| 欧美三级电影网站| 日本不卡一区二区三区| 欧美一区二区高清| 国产精品自拍毛片| 国产精品久久久久久久久免费相片| 日韩美女视频一区| 欧美日免费三级在线| 视频一区二区三区中文字幕| 欧美一级搡bbbb搡bbbb| 极品瑜伽女神91| 国产精品三级av在线播放| caoporn国产一区二区| 夜夜精品视频一区二区| 制服视频三区第一页精品| 久久精品国产精品青草| 中文字幕巨乱亚洲| 欧美自拍丝袜亚洲| 捆绑调教一区二区三区| 国产精品美女视频| 在线综合亚洲欧美在线视频| 国产精品自拍av| 亚洲专区一二三| 26uuu国产一区二区三区| 97国产精品videossex| 蜜臀av一区二区在线观看| 欧美国产禁国产网站cc| 欧美日韩国产一区二区三区地区| 亚洲欧美综合在线精品| 欧美一区二区视频免费观看| 国产综合色视频| 亚洲影视资源网| 亚洲国产精品国自产拍av| 欧美日韩在线不卡| 成人开心网精品视频| 午夜日韩在线观看| 欧美激情一区二区三区四区| 精品视频在线免费看| 成人三级伦理片| 精品在线播放免费| 亚洲成人激情av| 亚洲丝袜制服诱惑| 国产日韩欧美精品综合| 欧美一级欧美一级在线播放| 99re热视频精品| 国产成人福利片| 奇米一区二区三区| 亚洲午夜影视影院在线观看| 国产精品网曝门| 国产亚洲精品久| 精品国产免费久久| 91精品国产乱码| 欧美日韩中字一区| 91黄色免费看| 91黄色免费观看| 一本到高清视频免费精品| 成人久久视频在线观看| 国产大片一区二区| 国产精品18久久久| 国产高清亚洲一区| 国产伦精品一区二区三区视频青涩 | 一区二区三区在线播| 日本一区二区动态图| 久久久久久久综合狠狠综合| 91麻豆精品国产无毒不卡在线观看| 日韩黄色片在线观看| 亚洲图片一区二区| 一二三区精品视频| 亚洲国产精品久久人人爱蜜臀| 欧美日韩一区二区三区在线| 色美美综合视频| 欧美在线一二三| 欧美调教femdomvk| 欧美日韩大陆一区二区| 欧美巨大另类极品videosbest| 久久精品国产免费| 日本欧美一区二区三区乱码| 日本欧美大码aⅴ在线播放| 日本sm残虐另类| 精彩视频一区二区三区| 国产精品一区二区免费不卡 | 欧美性淫爽ww久久久久无| 在线免费av一区| 在线不卡中文字幕播放| 欧美成人精精品一区二区频| 欧美一区二区观看视频| 久久网这里都是精品| 国产欧美日韩视频在线观看| 国产精品麻豆久久久| 亚洲一区二区四区蜜桃| 日本一不卡视频| 成人性生交大片免费看视频在线 | 国产成人久久精品77777最新版本| 中文字幕精品一区| 亚洲男人的天堂av| 亚洲一区二区三区在线播放| 天堂蜜桃一区二区三区| 国产乱码字幕精品高清av | 国内外精品视频| 成人高清视频免费观看| 在线观看不卡一区| 精品福利一二区| 1000部国产精品成人观看| 亚洲欧美日韩系列| 视频一区在线播放| 成人av综合一区| 欧美电影在哪看比较好| 国产精品伦理一区二区| 蜜乳av一区二区| proumb性欧美在线观看| 欧美欧美午夜aⅴ在线观看| 国产欧美一区二区精品性色| 亚洲精品v日韩精品| 国产精品88av| 91精品免费观看| 亚洲欧美激情一区二区| 国产精品99久久久久久有的能看| 激情久久五月天|