- 浏览: 92969 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jameswolf:
补肾啊!冬天多喝,但是补只是后招,别漏才是真理,呵呵
朋友告诉我的神粥秘方 -
wa327114652:
很想学习,但能再详细点吗?
for java beginner 5-2 - 自己实现枚举-下 -
superlittlefish:
不错,简单易懂.一直在看你的blog,感觉反射写的挺好的.让我 ...
for java beginner 15 下java反射在框架里的应用 读取properties文件
017 配置文件的知识
刚刚已经说到 配置文件,我说放 工程下,和src 兄弟
这时的目录结构是
D:\enhance
│ .project
│ .classpath
│ ★config.properties
│
├─src
│ └─com
│ └─ncs
│ Enum.java
│ Weekday.java
│ EnumDemo.java
│ EnumWithAbstractMethod.java
│ ReflectTest.java
│ Point.java
│ HasMainMethod.java
│ RunOtherClassMainMethod.java
│ ArrayReflct.java
│ ReflectInCollection.java
│ MyHashTest.java
│ ReadProperties.java
│
└─bin
└─com
└─ncs
Enum.class
Weekday.class
Weekday$1.class
Weekday$2.class
EnumDemo.class
EnumDemo$Month.class
EnumWithAbstractMethod.class
EnumWithAbstractMethod$TrafficLights.class
EnumWithAbstractMethod$TrafficLights$3.class
EnumWithAbstractMethod$TrafficLights$1.class
EnumWithAbstractMethod$TrafficLights$2.class
ReflectTest.class
Point.class
HasMainMethod.class
RunOtherClassMainMethod.class
ArrayReflct.class
ReflectInCollection.class
MyHashTest.class
ReadProperties.class
我开发好了后,不可能把enhance整个目录给 客户,最多把bin目录打包给人家
★那么把配置文件放哪里呢???????????
我刚刚前一篇这样说过:
------------------
//介绍反射的好处
//比方说我不写死,写一个 米你 框架,接受用户在配置文件里写的类
//配置文件写在 工程目录底下,不是src下 和src兄弟级
public static void main(String[] args) throws Exception {
//load properties file
InputStream is = new FileInputStream("config.properties");
------------------
★其实不会这么做的
来看一下
C:\Documents and Settings\hubin>java MyClass xx.file
这里的xx.file 既不关系你的JAVA.EXE 也不关系你的MyClass这个类在哪里
而是和C:\Documents and Settings\hubin有关
然而你也可以到D盘去运行MyClass
这时又要在D盘下准备xx.file,显然不可行
如果写死
InputStream is = new FileInputStream("D:\\config.properties");
也不对的.
怎么办?????????
1,可以写一个 配置文件,告诉JVM,我把配置文件放哪里了,就是描述配置文件在哪里的配置文件
2,用类加载器
我们平时用的*.class文件怎么进JVM的呢???
既然 类加载器 可以把*.class文件从disk上加到JVM里
那么 加载 个配置文件也是顺手之劳了
具体看代码吧::
-----------------------------------------------
-----------------------------------------------------
刚刚已经说到 配置文件,我说放 工程下,和src 兄弟
这时的目录结构是
D:\enhance
│ .project
│ .classpath
│ ★config.properties
│
├─src
│ └─com
│ └─ncs
│ Enum.java
│ Weekday.java
│ EnumDemo.java
│ EnumWithAbstractMethod.java
│ ReflectTest.java
│ Point.java
│ HasMainMethod.java
│ RunOtherClassMainMethod.java
│ ArrayReflct.java
│ ReflectInCollection.java
│ MyHashTest.java
│ ReadProperties.java
│
└─bin
└─com
└─ncs
Enum.class
Weekday.class
Weekday$1.class
Weekday$2.class
EnumDemo.class
EnumDemo$Month.class
EnumWithAbstractMethod.class
EnumWithAbstractMethod$TrafficLights.class
EnumWithAbstractMethod$TrafficLights$3.class
EnumWithAbstractMethod$TrafficLights$1.class
EnumWithAbstractMethod$TrafficLights$2.class
ReflectTest.class
Point.class
HasMainMethod.class
RunOtherClassMainMethod.class
ArrayReflct.class
ReflectInCollection.class
MyHashTest.class
ReadProperties.class
我开发好了后,不可能把enhance整个目录给 客户,最多把bin目录打包给人家
★那么把配置文件放哪里呢???????????
我刚刚前一篇这样说过:
------------------
//介绍反射的好处
//比方说我不写死,写一个 米你 框架,接受用户在配置文件里写的类
//配置文件写在 工程目录底下,不是src下 和src兄弟级
public static void main(String[] args) throws Exception {
//load properties file
InputStream is = new FileInputStream("config.properties");
------------------
★其实不会这么做的
来看一下
C:\Documents and Settings\hubin>java MyClass xx.file
这里的xx.file 既不关系你的JAVA.EXE 也不关系你的MyClass这个类在哪里
而是和C:\Documents and Settings\hubin有关
然而你也可以到D盘去运行MyClass
这时又要在D盘下准备xx.file,显然不可行
如果写死
InputStream is = new FileInputStream("D:\\config.properties");
也不对的.
怎么办?????????
1,可以写一个 配置文件,告诉JVM,我把配置文件放哪里了,就是描述配置文件在哪里的配置文件
2,用类加载器
我们平时用的*.class文件怎么进JVM的呢???
既然 类加载器 可以把*.class文件从disk上加到JVM里
那么 加载 个配置文件也是顺手之劳了
具体看代码吧::
-----------------------------------------------
package com.ncs; import java.io.InputStream; import java.util.Collection; import java.util.Properties; public class ReadProperties { //介绍配置文件放哪里了 public static void main(String[] args) throws Exception { //要run这个APP,ReadProperties肯定要进JVM吧 //可以从这个类开刀,找到类加载器,然后 类加载器 在classpath下 一个个去找 InputStream is =ReadProperties.class.getClassLoader().getResourceAsStream("com/ncs/config.properties"); //注意没有 / 打头 //现在好了,只是这方式不可以写,只读的, //很多很多的框架的配置文件都用这种方式的,所以都不啊配置文件放classpath下的 //可以在ECLIPSE的src下放一个,IDE会自己给你创建一个在 bin下,最里面,写名字要写包名com/ncs/config.properties //不要自己去放,会被ECLIPSE删掉的,要在IDE里放 InputStream is2 = ReadProperties.class.getResourceAsStream("config.properties"); //上面这行就更简单了,包名也可以不要了,ReadProperties 和 config.properties同名 //也可以加 / 加了就是说从 根开始找 一层一层包名要写全了 //把配置文件放中间会怎么样呢? //好象没有中间,都放src下,也就是直接在src下一层就有了[我的程序] Properties properties = new Properties(); properties.load(is); is.close(); String className = properties.getProperty("className");//良好的命名习惯 //Collection collection = new ArrayList(); 现在不用写死了 Collection collection = (Collection)Class.forName(className).newInstance(); String test = "hubin"; collection.add(test); collection.add(test); collection.add(test); System.out.println(collection.size()); //3 因为在培植文件里是ArrayList //System.out.println(collection.size()); //1 因为在培植文件里是java.util.HashSet } }
-----------------------------------------------------
发表评论
-
pull解析器通用解析XML与生成XML
2013-02-23 14:52 0pull解析器,简单易用,android都在用,肯定有他的优 ... -
java decompiler - a tool to view jar file
2012-02-15 22:26 961有时候还是很需要看看人家JAR包里写的什么乱七八糟的东西,这东 ... -
JAVA工作
2011-07-20 21:11 687################## Applet ... -
helios-use-subversion-behind-proxy
2011-04-04 16:30 733download the eclipse helios in ... -
IBM发布时间不足解决方法
2011-02-17 19:16 724D:\IBM\SDP\runtimes\base_v61\p ... -
log4j简单例子
2010-10-03 18:27 822简单点说, 写程序时,有时懒得debug,就直接Sy ... -
java 泛型-1-使用而已
2009-12-01 23:39 1026023-java1.5泛型-1 懒人想的 把检查代码的工作交 ... -
java 1.5 annotation-3 设值让反射拿
2009-12-01 20:39 1544java 1.5 annotation 的use 前面的什么 ... -
java 1.5 annotation-2
2009-11-30 23:28 1148java 1.5 注解-2[非常重要 比每举重要] 刚刚只是 ... -
java 1.5 annotation-1
2009-11-30 21:07 1268java 1.5 注解[非常重要 比每举重要] 1.5后的新 ... -
for java beginner-19 beanutils包
2009-11-29 22:20 722019-使用BeanUtils工具包操 ... -
for java beginner-18 JAVABEAN规范-1
2009-11-29 21:12 985018-JAVABEAN规范-1 IntroSpec ... -
for java beginner 15 下java反射在框架里的应用 读取properties文件
2009-11-29 17:44 1342java 框架基础 ------------------- ... -
for java beginner 14 ArrayList HashSet HashCode(中)
2009-11-29 13:24 1090java 反射 数组的反射 ArrayList HashSe ... -
for java beginner13java 反射 数组的反射(上)其实是讲ArrayList HashSet HashCode
2009-11-29 12:35 888java 反射 数组的反射(上 ... -
for java beginner12数组的反射的应用
2009-11-29 10:04 956java 反射 数组的反射 数组也是一种类型,当然可以反射 ... -
for java beginner11 java 反射 Method类
2009-11-29 08:30 1209java 反射 Method类 str1.charAt() ... -
for java beginner10 java 反射 Field类
2009-11-29 07:17 3500java 反射 Field类 -------用到一个bea ... -
for java beginner 9 java反射的概念和Constructor 类
2009-11-29 07:13 1340java 反射 的概念 和 Constructor 类 反 ... -
for java beginner 8 java 反射的基础基础Class的理解
2009-11-29 07:09 968java 反射 的基础基础 Class的理解 反射 在 1 ...
相关推荐
introduce in english
Java Programming for the Absolute Beginner.pdf
Java A Beginner's Guide(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...
So many books out there can teach you those skills in Java, C++, or C#. Many of them even claim that they can teach you in 24 hours! Don’t laugh! They probably can do that, but all of them take one ...
Fully updated to cover Java Platform, Standard Edition 7 (Java SE 7), Java: A Beginner's Guide, Fifth Edition starts with the basics, such as how to compile and run a Java program, and then discusses...
Java Programming for the Absolute Beginner
Pentaho 8 Reporting for Java Developers 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java For Absolute Beginner
java beginner guide,
Java A Beginner's Guide(6th) 英文epub 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner’s Guide(7th) 英文epub 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner's Guide(6th) 英文mobi 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Welcome to C# and the world of Windows, Internet and World-Wide-Web programming with Visual Studio and the .NET platform! This book is the second in our new .NET How to Program series, which presents ...
Java A Beginner’s Guide(7th) 英文azw3 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
jQuery for Designers Beginner's Guide Second Edition 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或...
Python Programming for the Absolute Beginner
Algorithm-Machine-Learning-for-Beginner-by-Python3.zip,斯克莱恩、坦索流。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Microsoft Excel VBA Programming for the Absolute Beginner 2002
一本适用于java初学者的英文版教材,很全面的介绍了Java的初阶内容。
Python Programming for the Absolute Beginner 3rd 适用于Python 初学者