将文件加载到java.util.Properties中的一行
One-liner to load files into java.util.Properties
我有很多 java 包含凭据和其他配置的属性文件,我正在寻找最紧凑的代码来在 Nashorn 的 java 脚本和 Java 中加载这些文件.
到目前为止,我还剩下 2 行:
credentials = new java.util.Properties();
credentials.load(new java.io.FileInputStream("credentials.properties"));
我试过这个明显的合并,但它在 Nashorn 中不起作用:
credentials = (new java.util.Properties()).load(new java.io.FileInputStream("credentials.properties"));
这些可以合并为一行吗?可读性受到严重影响也没关系
我认为它应该有效,至少在 Java :
(credentials = new java.util.Properties()).load(new java.io.FileInputStream("credentials.properties"));
最简单和最安全的解决方案是使用实用方法引入一个间接层:
public static Properties loadProperties(File file)
{
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream(file))
{
props.load(fis);
}
catch (IOException ioex) { ioex.printStackTrace(); }
return props;
}
Properties credentials = loadProperties(new File("credentials.properties"));
等效的 JS 是(没有 try/catch
):
function loadProperties(file) {
var props = new java.util.Properties();
props.load(new java.io.FileInputStream(file));
return props;
}
通过添加 try
语句,您还可以轻松捕获 I/O 个错误。
如果你想使用 Java-8 风格并非常规地使用 Optional
和 lambda,你可以试试这个
Properties credentials=Optional.of(new Properties()).map(p->{try{p.load(new FileInputStream("credentials.properties"));}catch(IOException e){}return p;}).get();
(更长,但带有换行符的可读性更高的版本)
Properties credentials = Optional.of(new Properties())
.map(p -> {
try
{
p.load(new FileInputStream("credentials.properties"));
}
catch (IOException ex) {}
return p;
})
.get();
更新:
没有 try/catch 它变成了 java:
Properties credentials = Optional.of(new Properties()).map(p -> { p.load(new FileInputStream("credentials.properties")); return p; }).get();
对于 Nashorn js:
var credentials = java.util.Optional.of(new java.util.Properties()).map(function(p) { p.load(new java.io.FileInputStream("credentials.properties")); return p;}).get();
我有很多 java 包含凭据和其他配置的属性文件,我正在寻找最紧凑的代码来在 Nashorn 的 java 脚本和 Java 中加载这些文件.
到目前为止,我还剩下 2 行:
credentials = new java.util.Properties();
credentials.load(new java.io.FileInputStream("credentials.properties"));
我试过这个明显的合并,但它在 Nashorn 中不起作用:
credentials = (new java.util.Properties()).load(new java.io.FileInputStream("credentials.properties"));
这些可以合并为一行吗?可读性受到严重影响也没关系
我认为它应该有效,至少在 Java :
(credentials = new java.util.Properties()).load(new java.io.FileInputStream("credentials.properties"));
最简单和最安全的解决方案是使用实用方法引入一个间接层:
public static Properties loadProperties(File file)
{
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream(file))
{
props.load(fis);
}
catch (IOException ioex) { ioex.printStackTrace(); }
return props;
}
Properties credentials = loadProperties(new File("credentials.properties"));
等效的 JS 是(没有 try/catch
):
function loadProperties(file) {
var props = new java.util.Properties();
props.load(new java.io.FileInputStream(file));
return props;
}
通过添加 try
语句,您还可以轻松捕获 I/O 个错误。
如果你想使用 Java-8 风格并非常规地使用 Optional
和 lambda,你可以试试这个
Properties credentials=Optional.of(new Properties()).map(p->{try{p.load(new FileInputStream("credentials.properties"));}catch(IOException e){}return p;}).get();
(更长,但带有换行符的可读性更高的版本)
Properties credentials = Optional.of(new Properties())
.map(p -> {
try
{
p.load(new FileInputStream("credentials.properties"));
}
catch (IOException ex) {}
return p;
})
.get();
更新:
没有 try/catch 它变成了 java:
Properties credentials = Optional.of(new Properties()).map(p -> { p.load(new FileInputStream("credentials.properties")); return p; }).get();
对于 Nashorn js:
var credentials = java.util.Optional.of(new java.util.Properties()).map(function(p) { p.load(new java.io.FileInputStream("credentials.properties")); return p;}).get();