Java Load File传递给其他类

时间:2014-09-23 17:22:22

标签: java file-io

将文件加载到java应用程序以传递给另一个类的最佳方法是什么?

目前我正在使用JFileChooser来选择源文件(C,C ++,Java),然后将其传递给名为src2srcml的可执行文件。我的代码运行src2srcml工具,该工具获取源文件并将其转换为XML,然后存储在我的工作区(eclipse)中。然后,我想要获取该XML文件并将其传递给另一个要分析的类。正如您在下面看到的,我正在尝试使用getResources方法。它可以找到文件,但我实际上并不知道如何将它传递给类UnitXMLReader。 GetResources返回文件的URL,但另一个类需要文件路径。有没有更好的方法来查找文件?

JButton btnRunSourceCode = new JButton("Run Source Code");
    btnRunSourceCode.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            //------Check for loaded file ----//
            if(filePath == null){
                textArea.setText("Please Load a source file (C, C++, Java)");                   
            }
            else{
                try{
                    int c;
                    textArea.setText("Converting Source Code to XML");
                    String workspace = System.getProperty("user.dir");
                    String classPath = System.getProperty("java.class.path");
                    String[] commands = {"/bin/bash", "-c", "cd " + workspace + " && ./src2srcml --position " + selectedFile.getName() + " -o " + classPath + "/xmlParseGUI/targetFile.xml"};

                    Process src2XML = Runtime.getRuntime().exec(commands);
                    InputStream in1 = src2XML.getErrorStream();
                    InputStream in2 = src2XML.getInputStream();
                    while ((c = in1.read()) != -1 || (c = in2.read()) != -1) {
                        System.out.print((char)c);
                        }
                    src2XML.waitFor();
                    }

                catch(Exception exc){/*src2srcml Fail*/}
            }

            ParallelXMlGUI c = new ParallelXMlGUI();
            Class<? extends ParallelXMlGUI> cls = c.getClass();

            // finds resource relative to the class location
            URL url = cls.getResource("targetFile.xml");
            //UnitXMLReader.ChosenFile = filePath;
            //UnitXMLReader.main(null);
            System.out.println("Value = " + url);

1 个答案:

答案 0 :(得分:0)

File file = new File(classPath + "/xmlParseGUI/targetFile.xml);

Java有一个用于处理文件的文件类。尝试创建指向该文件的新File对象。然后传递新的File对象。

或者您可以尝试相对路径:

File file = new File("/smlParseGUI/targetFile.xml");

一对文件方法:

file.getPath();
file.getString();