Preferences prefs = Preferences.userNodeForPackage(Launcher.class); if (args.length > 0) fileChooser = new JFileChooser(args[0]); else { // prefs可以在注册表中缓存上次打开的文件路径, // 具体参考java.util.prefs.AbstractPreferences的get和put方法 String fileName = prefs.get("recent.file", null); fileChooser = new JFileChooser(); if (fileName != null) { fileChooser = new JFileChooser(); fileChooser.setSelectedFile(new File(fileName)); } } if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { String fileName = fileChooser.getSelectedFile().getPath(); // 将fileName放入了注册表中, // 我的测试代码在我的机器上产生的注册表信息是这样的: // HKEY_USERS\S-1-5-21-2927120809-1180443650-1650080734-1000\Software\JavaSoft\Prefs\com\sun\tools\javac // 名称: recent.file // 数据: /D:///Workspace///Eclipse//workspace///Compiler_javac//test-files//java-files///For/Launcher_trace.java prefs.put("recent.file", fileName);
注册表:
注意:com.sun.tools.javac.Launcher这个类在JDK1.6内不是有效的,默认情况下它不会被编译进tools.jar,JDK1.7版本中tools.jar中已经有这个类了