📄 filemanagermidlet.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 + -