日期:2014-05-20 浏览次数:20775 次
//Replace类 import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class Replace extends MIDlet implements CommandListener { final private String help = "如果不设置并且以前没设置过,就默认为E:/UCDownloaded/Z/里的文件添加.jar,否则以你设置后的为准。"; final private String about = "作者:kyda\n版本:v1.1\nAll rights reserved.\n如果你有什么好的建议请站内信\n我的ID:jimieaaa"; // final static int dirnum = 1, sufnum = 2; private Display display; private Command exitCommand, actCommand, configCommand, helpCommand, aboutCommand; private Form fm; private Alert helpAlert, aboutAlert; static public String sDir, sSuf; private RMS rms; private AddSuffix addSuffix; private Config config; public Replace() { rms = new RMS(); sDir = rms.getConfig(1); sSuf = rms.getConfig(2); display = Display.getDisplay(this); fm = new Form("批量添加后缀"); exitCommand = new Command("退出", Command.EXIT, 2); actCommand = new Command("替换", Command.OK, 2); configCommand = new Command("设置", Command.ITEM, 2); helpCommand = new Command("帮助", Command.ITEM, 2); aboutCommand = new Command("关于", Command.ITEM, 2); fm.addCommand(exitCommand); fm.addCommand(actCommand); fm.addCommand(configCommand); fm.addCommand(helpCommand); fm.addCommand(aboutCommand); } public void destroyApp(boolean arg0) throws MIDletStateChangeException { } public void pauseApp() { } public void startApp() throws MIDletStateChangeException { //fm.append("sDir = " + sDir + "\nsSuf = " + sSuf + "\n"); fm.append("这是批量添加设定后缀的程序。\n\n"); //fm.append("还有点小bug,设置写好后按确定,然后再进入设置,这次按取消。这样就可以正常操作了。\n"); fm.append("请选择操作:\n"); display.setCurrent(fm); fm.setCommandListener(this); } public void commandAction(Command cmd, Displayable arg1) { if (cmd == exitCommand) { try { rms.closeRMS(); destroyApp(false); } catch (MIDletStateChangeException e) { e.printStackTrace(); } notifyDestroyed(); } else if (cmd == actCommand) { addSuffix = new AddSuffix(sDir, sSuf); addSuffix.Replace(fm); } else if (cmd == configCommand) { //fm.append("sDir = " + sDir + "\nsSuf = " + sSuf + "\n"); config = new Config(display, fm, sDir, sSuf); // configThread.start(); // try { // configThread.join(); // } catch (InterruptedException e) { // e.printStackTrace(); // } // sDir = rms.getConfig(1); // sSuf = rms.getConfig(2); } else if (cmd == helpCommand) { helpAlert = new Alert("帮助", help, null, AlertType.INFO); display.setCurrent(helpAlert); } else if (cmd == aboutCommand) { aboutAlert = new Alert("关于", about, null, AlertType.CONFIRMATION); display.setCurrent(aboutAlert); } } }
//AddSuffix类 import java.io.*; import java.util.*; import javax.microedition.io.*; import javax.microedition.io.file.*; import javax.microedition.lcdui.Form; public class AddSuffix { private FileConnection fc, oldfile; private Enumeration enums = null; private String str, sName, sDir = "file:///", sSuf = ".", newfile = ""; private int mode; public AddSuffix(String dir, String suf) { sDir += dir; sSuf += suf; mode = 1; } public AddSuffix(String dir, String name, String suf) { sDir += dir; sName = name; sSuf += suf; mode = 2; } public void Replace(Form fm) { fm.append("正在打开中...\n"); try { fc = (FileConnection) Connector.open(sDir, Connector.READ); if (!fc.exists()) { fm.append("no folder!\n"); return; } enums = fc.list(); while (enums.hasMoreElements()) { str = enums.nextElement().toString(); if (mode == 1) sName = str; try { oldfile = (FileConnection) Connector.open(sDir + str, Connector.READ_WRITE); newfile = sName + sSuf; try { oldfile.rename(newfile); } catch (IOException e) { fm.append(str + " 重命名失败!!!\n"); oldfile.close(); continue; } oldfile.close(); fm.append("重命名 " + str + " 成功!\n"); } catch (IOException e) { fm.append("文件" + str + "打开失败!\n"); continue; } } fc.close(); fm.append("添加后缀完成!\n"); } catch (IOException e) { fm.append("文件夹打开失败!\n"); e.printStackTrace(); } } }
//Config类 import javax.microedition.lcdui.*; public class Config implements CommandListener { private Display display; private TextField textFieldDir, textFieldSuf; private Form configForm, fm; private Command okCommand, cancelCommand; private RMS rms; private boolean isok = false; public Config() { } public Config(Display display, Form fm, String dir, String suf) { configForm = new Form("设置"); textFieldDir = new TextField("设置文件夹:", dir, 100, TextField.ANY); configForm.append(textFieldDir); textFieldSuf = new TextField("要添加的后缀:", suf, 10, TextField.ANY); configForm.append(textFieldSuf); configForm.append("\n\n注意:文件夹后要加'/'\n 后缀不要加'.'\n"); okCommand = new Command("确定", Command.OK, 2); cancelCommand = new Command("取消", Command.CANCEL, 2); configForm.addCommand(okCommand); configForm.addCommand(cancelCommand); this.display = display; this.fm = fm; configForm.setCommandListener(this); display.setCurrent(configForm); } public boolean isOK() { return isok; } public void commandAction(Command cmd, Displayable arg1) { if (cmd == okCommand) { rms = new RMS(); rms.setConfig(1, textFieldDir.getString()); rms.setConfig(2, textFieldSuf.getString()); //这里一直不能实现阻塞,只能用static的了,再学习去了 Replace.sDir = rms.getConfig(1); Replace.sSuf = rms.getConfig(2); rms.closeRMS(); isok = true; display.setCurrent(fm); } else if (cmd == cancelCommand) { isok = true; display.setCurrent(fm); } } }
//RMS类 import javax.microedition.rms.*; public class RMS { final private String fDir = "E:/UCDownloaded/Z/"; final private String fSuf = "jar"; private RecordStore rms; private String str = ""; private byte[] record = null; public RMS() { try { rms = RecordStore.openRecordStore("Config", true); if (rms.getNumRecords() == 0) { record = fDir.getBytes(); rms.addRecord(record, 0, record.length); record = fSuf.getBytes(); rms.addRecord(record, 0, record.length); } } catch (RecordStoreFullException e) { e.printStackTrace(); } catch (RecordStoreNotFoundException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } } public String getConfig(int i) { try { record = rms.getRecord(i); str = new String(record); } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } catch (InvalidRecordIDException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } return str; } public void setConfig(int i, String s) { record = s.getBytes(); try { rms.setRecord(i, record, 0, record.length); } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } catch (InvalidRecordIDException e) { e.printStackTrace(); } catch (RecordStoreFullException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } } public void closeRMS() { try { rms.closeRecordStore(); } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } } }