下午闲来无事,看了一个教程,关于读取properties的方法,其实,这种代码网上一大片一大片的,都懒的看了。说说我联想到了什么吧。
首先是getResourceAsStream()方法,就是从stream中获取resource而已,那么这个方法是谁提供的呢?
角色之一:ClassLoader
public InputStream getResourceAsStream(String name) {
URL url = getResource(name);
try {
return url != null ? url.openStream() : null;
} catch (IOException e) {
return null;
}
}
这里都是要找老子帮忙的,他爸是李刚吧,nonono,是Bootstrap刚。。。
public URL getResource(String name) {
URL url;
if (parent != null) {
url = parent.getResource(name);
} else {
url = getBootstrapResource(name);
}
if (url == null) {
url = findResource(name);
}
return url;
}
其中url.openStream()打开Stream,具体如下:
public final InputStream openStream() throws java.io.IOException {
return openConnection().getInputStream();
}
好吧,我承认一看到openConnection就想到JDBC了。其实吧,资源啥的我也不太了解。看看getSystemResource
public static URL getSystemResource(String name) {
ClassLoader system = getSystemClassLoader();
if (system == null) {
return getBootstrapResource(name);
}
return system.getResource(name);
}
就是首先获取SystemClassLoader,如果失败,则去找BootstrapResource 谁让BootstrapLoader是老大呢。
底层是调用了这个方法获取资源的。
static URLClassPath getBootstrapClassPath() {
return sun.misc.Launcher.getBootstrapClassPath();
}
bak1:此处就引发了ClassLoader的加载机制,放在下篇学习。
角色之二:Class
中午吃饭的时候还和同事讨论ClassLoader的一些东西,暂时先看下Class吧
public InputStream getResourceAsStream(String name) {
name = resolveName(name);
ClassLoader cl = getClassLoader0();
if (cl==null) {
// A system class. 有的class是没有loader的,so this nei~~
return ClassLoader.getSystemResourceAsStream(name);
}
return cl.getResourceAsStream(name);
}
resolved完成path后,依然是由ClassLoader去处理,此处莫非是代理模式,我日,设计模式离我这么遥远吗??
bak2:此处就引发了设计模式,放在下篇学习
总结:其实我想说的是,萝卜青菜,各有所爱,不是不爱,是吃饱了
分享到:
相关推荐
读取Properties文件是Java开发中的常见操作,特别是在需要根据配置文件动态改变程序行为的时候。下面我们将详细探讨如何在Java中读取Properties文件。 首先,你需要确保你的项目中包含了一个Properties文件,比如`...
在Python编程中,有时我们需要处理Java开发中常用的`.properties`配置文件。虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并...
在Java编程中,读取`.properties`文件是常见的任务,这些文件通常用于存储配置信息,如数据库连接字符串、系统设置等。`.properties`文件是一种基于键值对的文本格式,易于编写和理解。本篇文章将深入探讨如何在Java...
本篇将详细讲解如何在Java中读取`properties`文件并将其内容转换为`Map`对象。 1. **properties文件结构** `properties`文件的结构非常简单,每行代表一个键值对,键和值之间用等号`=`或冒号`:`分隔。例如: ``` ...
本篇文章将详细讲解如何在Java中“完美”地读取`properties`文件。 首先,我们需要了解`properties`文件的基本结构。它是一个文本文件,其中键值对以`key=value`的形式存储,每一行代表一个键值对,注释以`#`或`!`...
在Java编程中,有时我们需要在运行时动态地修改配置文件,比如Properties文件。Properties文件是Java用来存储配置信息的一种常见方式,通常包含了应用的各种参数设置。然而,一旦将应用程序打包成JAR,内部的资源...
在提供的`ConfigInfo.java`文件中,可能包含了实现Properties文件读取的具体逻辑,而`readme.txt`可能是指导如何使用这个类或者解释代码功能的文档。如果你需要查看具体实现,可以查阅这两个文件。通过分析`Config...
在Java编程中,读取`.properties`配置文件是常见的任务,这些文件通常用于存储应用程序的配置参数、系统设置等信息。下面将详细介绍几种在Java中读取`.properties`配置文件的方法。 1. 使用`java.util.Properties`...
Java 读取 ShapeFile 文件的源代码解析 ShapeFile 是一种常用的 GIS 文件格式,用于存储地理空间数据。 Java 语言可以通过各种库和框架来读取 ShapeFile 文件。下面将对 Java 读取 ShapeFile 文件的源代码进行解析...
在JavaScript环境中,与Java或服务器端语言不同,我们通常无法直接读取.properties文件,因为浏览器安全限制禁止了这种跨域请求。然而,为了在前端实现国际化(i18n)功能,有时候我们需要在JavaScript文件中读取...
本文将详细讲解如何在 Java 中读取、修改和删除 `.properties` 文件的内容。 1. **资源文件的位置** 在 Java 应用程序中,`.properties` 文件一般存放在类路径 (classpath) 下,特别是放在工程项目的 `class` 包下...
在测试过程中,可以创建一个名为`Test.java`的类,模拟上述步骤来读取数据库中的数据。例如: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql....
除了`Properties.Settings`类之外,还可以使用`ConfigurationManager`类来读取配置文件中的设置。这种方式适用于那些不希望在代码中硬编码配置项名称的情况。 1. **读取设置**: ```csharp string value = ...
`Properties`类还提供了`store()`方法将属性保存到文件: ```java OutputStream output = new FileOutputStream("config.properties"); props.setProperty("database.name", "new_name"); props.store(output, ...
读取.properties文件的主要工具有Java的Properties类。以下是一个简单的示例,展示如何使用Properties类加载文件并将其内容转换为Map: ```java import java.io.*; import java.util.*; public class ...
通过以上步骤,你可以使用Java的`Properties`类高效地读取、修改和保存配置文件,为你的应用程序提供灵活的配置管理。在实际项目中,你可能会将其封装到一个单独的类,如示例代码中的`PropertiesReader`,以提供更...
在Java编程中,读取`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息,如数据库连接字符串、系统参数等。`.properties`文件是一种基于键值对的文本格式,易于理解和编辑。在这个场景中,我们将探讨...
Java提供了内置的`Properties`类来方便地读取和写入这些配置文件,使得在程序中动态访问这些设置变得简单。 首先,我们需要创建`.properties`文件。例如,我们可以创建一个名为`config.properties`的文件,内容如下...