文件路径给定正确,但文件显示找不到错误文件

时间:2017-10-11 19:04:40

标签: javafx netbeans

我正在创建一个小应用程序,用于在javafx上使用保存数据...问题告诉我,当我运行我的应用程序时找不到文件.. 错误消息

`java.io.FileNotFoundException: null\sample-app.conf (The system cannot find the path specified)`
错误行的

代码如下

    private String configFile = System.getProperty("user.home") + File.separator + "sample-app.conf";

public  boolean loadLicense() {
      //  throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     try {
            properties.load(new FileInputStream(configFile));

            licenseString = properties.getProperty("license-string");
            activatedLicenseString = properties.getProperty("activated-license-string");
            if (properties.getProperty("license-type") != null) {
                licenseType = Integer.parseInt(properties.getProperty("license-type"));
            }
            if (properties.getProperty("activated-license-type") != null) {
                activatedLicenseType = Integer.parseInt(properties.getProperty("activated-license-type"));
            }

            hostname = properties.getProperty("floating-license-server-hostname");
            if (properties.getProperty("floating-license-server-port") != null) {
                int portnumber = Integer.parseInt(properties.getProperty("floating-license-server-port"));
            }

            return true;
        } catch (IOException ex) {
            Logger.getLogger(RegController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return false;
    }

1 个答案:

答案 0 :(得分:0)

目前还不清楚为什么要使用System.getProperty("C:\\Users\\Lenovo")构建路径,但这几乎肯定会返回null。这可能是您问题的根源,但由于您没有提供堆栈跟踪,因此无法确定。

这是因为您传递了System.getProperty() intended to return a value for a property key,而且" C:\ Users \ Lenovo"不是属性键(除非您使用-D选项运行JVM,将其设置为属性)。

因此,解决方案取决于您想要做什么。

  1. 也许这个.conf文件总是在同一个位置。如果是这种情况,请将configFile设置为路径名的固定String版本。
  2. 也许您想将-D "my.license.conf.rootdir=C:\\Users\\Lenovo"传递给JVM,在这种情况下,您可以使用System.getProperty("my.license.conf.rootdir")来构建您的路径。
  3. 别的。你可以用其他方式构建一条对你有意义的路径。
  4. 无论你做什么,一旦你有了一个字符串路径名,就可以使用像File.exists()之类的典型API对它进行验证,然后再将其传递给实际需要特定文件的路径名出现在系统上的代码,并在你的代码。

    也就是说,你想按顺序:

    • 导出,汇编或定义路径名,可能是某种String
    • 验证此路径名,以便您知道此路径名的具体磁盘表示
    • 将此经过验证的路径名传递给更多代码,可以是String或其他对象