作用:为指定文件夹的每个文件添加设定的后缀(jar好像不行,我也不知道为什么)
还不是很完美,这个程序就这样吧,下个程序再学习去了。
文件结构:
Replace类--------主类
AddSuffix类------添加后缀
Config类---------设置文件夹,后缀
RMS类------------保存设置
ConfigThread类---没有用到,就不贴了
//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(); } }}