栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在静态初始化程序块中加载Java属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在静态初始化程序块中加载Java属性

首先,从中获取

InputStream
要加载的属性。这可以来自多个位置,包括一些最可能的位置:

  • A
    FileInputStream
    ,使用硬编码或通过系统属性指定的文件名创建。名称可以是相对的(相对于Java进程的当前工作目录)或绝对的。
  • 资源文件(类路径上的文件),通过
    getResourceAsStream
    Class
    (相对于类文件)或
    ClassLoader
    (相对于类路径的根)的调用获得。请注意,如果资源丢失,这些方法将返回null,而不是引发异常。
  • URL
    ,其中,像一个文件名,可以通过设置系统属性硬编码或指定。

然后创建一个新

Properties
对象,并将其传递
InputStream
给其
load()
方法。无论有任何例外,请确保关闭流。

在类初始化程序中,

IOException
必须处理类似检查的异常。可以引发未经检查的异常,这将阻止类的初始化。这样通常会完全阻止您的应用程序运行。在许多应用程序中,可能希望改用默认属性,或者回退到其他配置源,例如提示在交互式上下文中使用。

总共看起来可能像这样:

private static final String NAME = "my.properties";private static final Properties config;static {  Properties fallback = new Properties();  fallback.put("key", "default");  config = new Properties(fallback);  URL res = MyClass.getResource(NAME);  if (res == null) throw new UncheckedIOException(new FileNotFoundException(NAME));  URI uri;  try { uri = res.toURI(); }  catch (URISyntaxException ex) { throw new IllegalArgumentException(ex); }  try (InputStream is = Files.newInputStream(Paths.get(uri))) { config.load(is); }   catch (IOException ex) { throw new UncheckedIOException("Failed to load resource", ex); }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号