com.sun.tools.javac.Launcher中使用Preferences操作Windows注册表

OpenJDK javac中com.sun.tools.javac.Launcher有以下代码,在Windows平台上使用注册表来保存上次打开的路径信息,以下是代码片段:
        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中使用Preferences操作Windows注册表_第1张图片

注意:com.sun.tools.javac.Launcher这个类在JDK1.6内不是有效的,默认情况下它不会被编译进tools.jar,JDK1.7版本中tools.jar中已经有这个类了

你可能感兴趣的:(prefs)