⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filemanagermidlet.java

📁 J2ME程序设计实例教程的源码
💻 JAVA
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.io.file.*;

/**
 * FileManagerMIDlet类是应用程序的主类,控制应用程序的生命周期。
 */
public class FileManagerMIDlet extends MIDlet implements FileSystemListener{
    private Display display;
    private FileManager manager;        //文件管理器
    private SysRootsList rootsList;     //根目录列表
    private DirList dirList;            //目录文件列表
    private CreateForm createForm;      //创建文件窗体
    private PropertyForm propertyForm;  //文件属性窗口
    private ReaderBox readerBox;        //文本阅读器
    private Alert errAlert;             //错误信息!
    private Alert processAlert;         //
    private String copyFile = "";
    
    public FileManagerMIDlet() {
        manager = new FileManager();    //创建文件管理器
        FileSystemRegistry.addFileSystemListener(this); //添加文件系统监视器
    }
    
    public void startApp() {
        display = Display.getDisplay(this);
        try {
            if(rootsList == null) {
                rootsList = new SysRootsList(this, manager.list());
            }
            display.setCurrent(rootsList);
        }
        catch(IOException ioe) {
            showError("显示文件系统失败!" + ioe.toString(), rootsList);
        }
    }
    
    public void pauseApp() {
        //
    }
    
    public void destroyApp(boolean unconditional) {
        manager.release();  //释放管理器资源
    }
    
    //退出应用程序
    public void exit() {
        destroyApp(true);
        notifyDestroyed();
    }
    
    //显示dir目录中的所有文件
    public void displayDirList(String dir) throws IOException {
        System.out.println("==========="+dir);
        manager.changeDirectory(dir);   //改变当前目录
        if(manager.isDriveRoot()) {
            display.setCurrent(rootsList);
        }
        else {
            String[] files = manager.list();  //获取当前目录下所有的文件
            if(dirList == null) {
                dirList = new DirList(this);
            }
            
            dirList.update(manager.getCurrDir(), files);
            display.setCurrent(dirList);
        }
    }
    
    //删除dir目录中的fileName文件
    public void delete(String fileName) {
        try {
            manager.delete(fileName);
            String[] files = manager.list();  //获取当前目录下所有的文件
            dirList.update(manager.getCurrDir(), files);
            display.setCurrent(dirList);
        }
        catch(IOException ioe) {
            showError("删除文件失败!!\n" + ioe.toString(), dirList);
        }
    }
    
    //显示创建文件窗体
    public void displayCreateForm() {
        if(createForm == null) {
            createForm = new CreateForm(this);
        }
        createForm.setBackScreen(dirList);
        display.setCurrent(createForm);
    }
    
    //显示文件属性窗体
    public void displayPropertyForm(String f, Displayable backScreen) {
        try {
            File file = manager.getProperty(f);
            if(propertyForm == null) {
                propertyForm = new PropertyForm(this);
            }
            propertyForm.update(file, backScreen);
            
            display.setCurrent(propertyForm);
        }
        catch(IOException ioe) {
            showError("显示属性错误\n" + ioe.toString(), backScreen);
        }
    }
    
    //显示错误
    public void showError(String errMsg, Displayable nextScreen) {
        if(errAlert == null) {
            errAlert = new Alert("错误!", errMsg, null, AlertType.ERROR);
            errAlert.setTimeout(Alert.FOREVER);
        }
        errAlert.setString(errMsg);
        
        display.setCurrent(errAlert, nextScreen);
    }
    
    //显示信息界面
    public void showProcessInfo(String msg) {
        if(processAlert == null) {
            processAlert = new Alert("等待...");
            Gauge gauge = new Gauge(null, false, 100, 1);
            processAlert.setIndicator(gauge);
            processAlert.setTimeout(100000);
        }
        processAlert.setString(msg);;
        display.setCurrent(processAlert);
    }
    
    //返回到backScreen界面
    public void backTo(Displayable backScreen) {
        display.setCurrent(backScreen);
    }
    
    //创建文件
    public void create(File file) {
        try {
            manager.create(file);
            String[] files = manager.list();  //获取当前目录下所有的文件
            dirList.update(manager.getCurrDir(), files);
            display.setCurrent(dirList);
        }
        catch(IOException ioe) {
            showError("创建文件错误!" + ioe.toString(), dirList);
        }
    }
    
    //FileSystemListener接口中的方法。
    //当用户向移动设备插入移动存储卡,或者拔出存储卡时,调用这个方法对用户的动作进行处理。
    public void rootChanged(int state, java.lang.String rootName) {
        Alert alert = new Alert("消息", "", null, AlertType.INFO);
        if(state == FileSystemListener.ROOT_ADDED) {        //插入一个设备
            alert.setString("系统发现一个新的存储设备:" + rootName);
        }
        else if(state == FileSystemListener.ROOT_REMOVED) { //删除一个设备
            alert.setString("一个存储设备:" + rootName+ "从系统中删除!");
        }
        
        alert.setTimeout(2000);
        
        String[] sr = manager.getSysRoots();
        rootsList.update(sr);
        display.setCurrent(alert);
    }
    
    //复制
    public void copy(String fileName) {
        copyFile = manager.getCurrDir() + fileName;
    }
    
    //粘贴
    public void paste() throws IOException {
        String desFile = FileManager.getName(copyFile);
        manager.copy(copyFile, desFile);
        String[] files = manager.list();  //获取当前目录下所有的文件
        dirList.update(manager.getCurrDir(), files);
        display.setCurrent(dirList);
    }
    
    //打开文本文件
    public void openTxtFile(String fileName, Displayable backScreen) throws IOException {
        if(!fileName.endsWith(".txt")) {
            throw new IOException("打开文件类型错误!");
        }
        
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        manager.read(fileName, baos);
        
        String fileContent = new String(baos.toByteArray());
        System.out.println(fileContent);
        if(readerBox == null) {
            readerBox = new ReaderBox(this);
        }
        
        readerBox.setContent(fileName, fileContent);
        readerBox.setBackScreen(backScreen);
        
        display.setCurrent(readerBox);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -