0

我有一个运行测试所需的文件 - 该文件需要由运行测试的任何人进行个性化(名称和密码)。我不想将此文件存储在 Eclipse 中(因为它需要由运行测试的任何人更改;它还将在存储库中存储个人信息),所以我将它放在我的主文件夹中(/home/conrad/ ssl.properties)。如何将我的程序指向该文件?

我试过了:

InputStream sslConfigStream = MyClass.class
    .getClassLoader()
    .getResourceAsStream("/home/" + name + "/ssl.properties");

我也试过:

MyClass.class.getClassLoader();
InputStream sslConfigStream = ClassLoader
    .getSystemResourceAsStream("/home/" + name + "/ssl.properties");

这两个都给了我一个 RuntimeException 因为它sslConfigStream是空的。任何帮助表示赞赏!

4

5 回答 5

3

使用 aFileInputStream从文件中读取数据。构造函数采用字符串路径(或File封装字符串路径的对象)。

注意 1: “资源”是类路径中的文件(与您的 java/class 文件一起)。由于您不想将文件存储为资源,因为您不希望它在您的存储库中,ClassLoader.getSystemResourceAsStream()这不是您想要的。

注意2: 你应该使用跨平台的方式来获取主目录中的文件,如下:

File homeDir = new File(System.getProperty("user.home"));
File propertiesFile = new File(homeDir, "ssl.properties");
于 2013-03-22T21:27:37.070 回答
0

您也可以使用扫描仪来读取文件。

String fileContent = "";
try {
  Scanner scan = new Scanner(
      new File( System.getProperty("user.home")+"/ssl.properties" ));
  while(scan.hasNextLine()) {
    fileContent += scan.nextLine();
  }
  scan.close();
} catch(FileNotFoundException e) {
}
于 2013-03-22T21:37:07.600 回答
0

InputStream sslConfigStream = new FileInputStream("/home/" + name + "/ssl.properties")

于 2013-03-22T21:29:40.393 回答
0

您可以使用 Java 的 7 方法简化您的工作:

public static void main(String[] args) {
    String fileName = "/path/to/your/file/ssl.properties";

    try {
        List<String> lines = Files.readAllLines(Paths.get(fileName),
                Charset.defaultCharset());
        for (String line : lines) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

您还可以改进读取属性文件的方式,使用 Properties 类而忘记读取和解析 .properties 文件:

http://www.mkyong.com/java/java-properties-file-examples/

于 2013-03-22T21:30:43.827 回答
0

这是一个图形程序(即使用 Swing 库)吗?如果是这样,使用 JFileChooser 是一项非常简单的任务。

http://docs.oracle.com/javase/6/docs/api/javax/swing/JFileChooser.html

JFileChooser f = new JFileChooser();

int rval = f.showOpenDialog(this);

if (rval == JFileChooser.APPROVE_OPTION) {
    // Do something with file called f
}
于 2013-03-22T21:31:45.697 回答