使用java获取dxdiag结果

使用java获取dxdiag结果,java,Java,我得到的错误是 String filePath = "./results.txt"; // Use "dxdiag /t" variant to redirect output to a given file ProcessBuilder pb = new ProcessBuilder("cmd.exe","/c","dxdiag","/t",filePath); S

我得到的错误是

                String filePath = "./results.txt";

                // Use "dxdiag /t" variant to redirect output to a given file
                ProcessBuilder pb = new ProcessBuilder("cmd.exe","/c","dxdiag","/t",filePath);
                System.out.println("-- Executing dxdiag command --");
                Process p = pb.start();
                p.waitFor();

                BufferedReader br = new BufferedReader(new FileReader(filePath));
                String line;
                System.out.println(String.format("-- Printing %1$1s info --",filePath));
                while((line = br.readLine()) != null){

                    if(line.trim().startsWith("Card name:")
                       || line.trim().startsWith("Current Mode:")
                       || line.trim().startsWith("Display Memory:"))

                        textArea_3.append(line.trim() + "\n");

                }
            } catch (IOException ex) {
                ex.printStackTrace();
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
java.io.FileNotFoundException:。\results.txt(系统找不到指定的文件)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:138)
位于java.io.FileInputStream。(FileInputStream.java:97)
位于java.io.FileReader。(FileReader.java:58)
在gui.gui$4.actionPerformed(gui.java:136)
在javax.swing.AbstractButton.fireActionPerformed上(AbstractButton.java:2018)
位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402)
在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259)
在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252)
位于java.awt.Component.ProcessMouseeEvent(Component.java:6505)
位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3321)
位于java.awt.Component.processEvent(Component.java:6270)
位于java.awt.Container.processEvent(Container.java:2229)
位于java.awt.Component.dispatchEventImpl(Component.java:4861)
位于java.awt.Container.dispatchEventImpl(Container.java:2287)
位于java.awt.Component.dispatchEvent(Component.java:4687)
位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4832)
位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4492)
位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
位于java.awt.Container.dispatchEventImpl(Container.java:2273)
位于java.awt.Window.dispatchEventImpl(Window.java:2719)
位于java.awt.Component.dispatchEvent(Component.java:4687)
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
在java.awt.EventQueue.access$200(EventQueue.java:103)
在java.awt.EventQueue$3.run(EventQueue.java:682)
在java.awt.EventQueue$3.run(EventQueue.java:680)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
在java.awt.EventQueue$4.run(EventQueue.java:696)
在java.awt.EventQueue$4.run(EventQueue.java:694)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)中
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:151)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
位于java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

我已经在Win7(不工作)和Win8(按预期工作)上试过了。如果有人对正在发生的事情有想法,我将非常感谢您的帮助,谢谢。

这似乎是一个相对路径问题。我建议尝试添加行System.out.println(新文件(filePath.getAbsolutePath());在实例化缓冲读取器之前,查看系统试图查找结果文件的确切位置。您可能还希望将DXDIAG的输出位置指定为绝对路径,以确保结果存储在您希望的位置。

1st完成缺少类名的代码

2nd给出main方法
公共静态void main(字符串args[])

3rd试块。

4th最后一个创建代码中缺少的TextArea对象:
TextArea TextArea_3=new TextArea()


代码将起作用。

您是否可以添加一些代码,使您发布的代码成为显示问题的最小可运行程序?现在,它似乎是从一个方法体复制的,该方法体包含一个初始的try关键字以及用户界面的定义。就您的问题而言,它似乎是一个相对路径问题。我建议尝试添加行System.out.println(新文件(filePath.getAbsolutePath());在实例化缓冲读取器之前,查看系统试图查找结果文件的确切位置。您可能还希望将DXDIAG的输出位置指定为绝对路径,以确保结果存储在您希望的位置。我已将路径设置为tmp dir,现在可以使用了。非常感谢:DYou's welcome:)您是否可以接受这一回答?
java.io.FileNotFoundException: .\results.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at java.io.FileReader.<init>(FileReader.java:58)
at gui.Gui$4.actionPerformed(Gui.java:136)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)