---------------------- android培训、java培训、期待与您交流! ----------------------
- 读取配置文件中的信息
配置文件的内容:
用URLClassLoader读配置文件内容:
import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Properties; public class Testext { public static void main(String[] args) throws IOException { Properties properties = new Properties(); URL[] urls = new URL[] { new URL("file:/" + System.getProperty("user.dir") + "/ravageWeb/") }; URLClassLoader ucl = new URLClassLoader(urls); //ClassLoader cl = Testext.class.getClassLoader(); //这两行也可以不写 //cl = ucl; //如果写,下面就要改为:cl.getResourceAsStream... properties.load(ucl.getResourceAsStream("resources/testpro.properties")); System.out.println(properties.getProperty("sui")); } }
遇到的问题:1. "/ravageWeb/" 中第二个 / 可写可不写。 但是若改为 "/ravageWeb/resources/" 则resources后必须加 / 否则报NullPointerException
用ClassLoader读配置文件内容:
import java.io.IOException; import java.util.Properties; public class Testext { public static void main(String[] args) throws IOException { Properties properties = new Properties(); properties.load(Testext.class.getClassLoader() .getResourceAsStream("resources/testpro.properties")); System.out.println(properties.getProperty("sui")); } }
总结:很显然ClassLoader与URLClassLoader的区别是:
ClassLoader只能读位于classpath下的文件(即:resources/testpro.properties必须放到src目录下,编译后进入bin目录);
而URLClassLoader可以读任意目录下的文件!
2. 载入一个类
用ClassLoader载入一个类:
import java.io.IOException; public class Testext { public static void main(String[] args) throws IOException, ClassNotFoundException { Class c = Testext.class.getClassLoader().loadClass("stalk.STalkClient"); System.out.println(c.getName()); //输出:stalk.STalkClient } }
用URLClassLoader载入一个类:
import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; public class Testext { public static void main(String[] args) throws IOException, ClassNotFoundException { URL[] urls = new URL[] { new URL("file:/" + System.getProperty("user.dir") + "/ravageWeb/") }; URLClassLoader ucl = new URLClassLoader(urls); Class c = ucl.loadClass("NoPackage"); System.out.println(c.getName()); } }
遇到的问题:"/ravageWeb/" 中第二个 / 必须写,否则报ClassNotFoundException
总结:
ClassLoader只能load位于classpath(src目录)下的类;
而URLClassLoader可以load任意目录下的类!
---------------------- android培训、java培训、期待与您交流! ----------------------