当前位置: 首页 > 面试题库 >

JAVA:如何从首选项页面访问文件路径并在编程代码中使用它

柳鸿信
2023-03-14
问题内容

我的ProcessBuilder类-

 public class HelloWorldAction implements IWorkbenchWindowActionDelegate {
IWorkbenchWindow activeWindow = null;

public void run(IAction proxyAction) {

    MessageConsole myConsole = null;
    String name = "outputConsole";

    ConsolePlugin plugin = ConsolePlugin.getDefault();
    IConsoleManager conMan = plugin.getConsoleManager();
    IConsole[] existing = conMan.getConsoles();
    for (int i = 0; i < existing.length; i++)
       if (name.equals(existing[i].getName()))
           myConsole = (MessageConsole) existing[i];

      //no console found, so create a new one
    if (myConsole == null)
        myConsole = new MessageConsole(name, null);

    conMan.addConsoles(new IConsole[]{myConsole});

    IWorkbench wb = PlatformUI.getWorkbench();
    IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
    IWorkbenchPage page = win.getActivePage();

    String id = IConsoleConstants.ID_CONSOLE_VIEW;
    try
    {
        IConsoleView view = (IConsoleView) page.showView(id);
        view.display(myConsole);

    }
    catch (Exception e)
    {

    }

    MessageConsoleStream out = myConsole.newMessageStream();
    out.println("Prism Button Works !");


    try {           //to clear the console on every click of button

        IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(IConsoleConstants.ID_CONSOLE_VIEW);
        if (view != null) {
            (myConsole).clearConsole();
        }
        ProcessBuilder pb=new ProcessBuilder("C:\\Program Files\\prism-4.0\\bin\\prism.bat");
        pb.directory(new File("C:\\Program Files\\prism-4.0\\bin"));
        Process p=pb.start();

        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String in;
        while((in = input.readLine()) != null) {
            out.println(in);
        }


        int exitVal=p.waitFor();

       if(exitVal==0)
       {
            out.println("Printing on console");

        }
       else
           out.println("Process failed");
    }
        catch (Exception e)
        {
            out.println(e.toString());
            e.printStackTrace();

        }
    } 
// IActionDelegate method
public void selectionChanged(IAction proxyAction, ISelection selection) {
    // do nothing, action is not dependent on the selection
}

// IWorkbenchWindowActionDelegate method
public void init(IWorkbenchWindow window) {
    activeWindow = window;

}

// IWorkbenchWindowActionDelegate method
public void dispose() {
    //  nothing to do
}

}

我的FileFieldEditorClass

   public class SAML
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {

public SAML() {
    super(GRID);
    setPreferenceStore(RmpPlugin.getDefault().getPreferenceStore());
    setDescription("Browse Appropriate files");
}

public FileFieldEditor f;
public FileFieldEditor f1;
public void createFieldEditors() {
        f=new FileFieldEditor(PreferenceConstants.P_PATH, 
            "&Prism.bat File:", getFieldEditorParent());
    addField(f);

    f1=new FileFieldEditor(PreferenceConstants.P_PATH1, 
            "&NuSMV Application File:", getFieldEditorParent());
    addField(f1);
}
public void init(IWorkbench workbench) {
}

}

FileFieldEditor类位于com.myplugin.rmp.preferences包中,ProcessBuilder类位于com.myplugin.rmp包中,

现在建议我访问的方式。


问题答案:

在构造ProcessBuilder的try块中尝试以下操作:

 IPreferenceStore store = plugin.getPreferenceStore();

 ProcessBuilder pb=new ProcessBuilder(store.getString(PreferenceConstants.P_PATH);
 pb.directory(new File(store.getString(PreferenceConstants.P_PATH1));
 Process p=pb.start();


 类似资料:
  • 问题内容: 我的游戏框架项目使用的资源文件是CSV文件,而我在资源目录下直接在游戏项目的根目录下创建了该文件,因此它与其他目录(如app,public等)处于同一级别。如何从Java或Scala文件中打开这样的文件使用相对于项目根目录的路径?当我进行战争并部署应用程序时,该路径也应该起作用。 问题答案: 该VirtualFile类应该做的,你需要“)fromRelativePath(”的一切,尤其

  • 我只想从文件的完整路径中获取文件夹路径。 例如,我希望只得到(不包括)。 我曾经尝试过这样的事情: 但它给了我这样一个结果: 这不是我需要的结果(是)。 关于如何获取文件路径有什么想法吗?

  • 我想使用java代码编辑以下首选项 Eclipse首选项通用工作区文本文件编码-Others-UTF-8 我需要有一个方法,调整4件事时,它被调用,所以我想调整上面的首选项使用java而不是manualyy...我怎么能这样做?

  • 问题内容: 我想知道是否以及如何在路径定义中使用通配符。我想更深入地查找一个文件夹并尝试使用*,但这不起作用。 我想访问随机文件夹中的文件。Folderstructure是这样的: 我试过的 先感谢您! 问题答案: 我认为不可能以这种方式使用通配符。我建议您对任务使用如下方式:

  • 问题内容: 在python中编写文件路径时,我看到了几种写语法的变体,并且我很好奇是否只有一种首选的方式:示例如下: 如果有人可以提供一些指导,将不胜感激。哦,就像信息一样,我的python技能水平是新手。 问题答案: 第一和第二完全相同。就字符数而言,第三个是最短的。此外,在Windows以外的平台上,也支持使用正斜杠作为路径分隔符。但是,如果要对Windows特定路径进行硬编码,那并不是那么重

  • 问题内容: 我有一个.dll文件,必须在Java中使用。该.dll文件具有参数化方法,该方法应将类型返回为字符串。当我将参数传递给它时,我得到的消息是 这是代码… 问题答案: 只需在项目中添加引用即可。和名称空间在顶部..然后您可以访问所有dll方法。如果您使用的是Eclispe,请右键单击您的项目->然后单击“构建路径”->,然后单击“添加库”,然后单击用户库。 在这里您可以导入dll