- 浏览: 97172 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 1026有时候还是很需要看看人家JAR包里写的什么乱七八糟的东西,这东 ... -
JAVA工作
2011-07-20 21:11 732################## Applet ... -
helios-use-subversion-behind-proxy
2011-04-04 16:30 769download the eclipse helios in ... -
IBM发布时间不足解决方法
2011-02-17 19:16 766D:\IBM\SDP\runtimes\base_v61\p ... -
log4j简单例子
2010-10-03 18:27 876简单点说, 写程序时,有时懒得debug,就直接Sy ... -
java 泛型-1-使用而已
2009-12-01 23:39 1130023-java1.5泛型-1 懒人想的 把检查代码的工作交 ... -
java 1.5 annotation-3 设值让反射拿
2009-12-01 20:39 1578java 1.5 annotation 的use 前面的什么 ... -
java 1.5 annotation-2
2009-11-30 23:28 1188java 1.5 注解-2[非常重要 比每举重要] 刚刚只是 ... -
java 1.5 annotation-1
2009-11-30 21:07 1325java 1.5 注解[非常重要 比每举重要] 1.5后的新 ... -
for java beginner-19 beanutils包
2009-11-29 22:20 755019-使用BeanUtils工具包操 ... -
for java beginner-18 JAVABEAN规范-1
2009-11-29 21:12 1036018-JAVABEAN规范-1 IntroSpec ... -
for java beginner 15 下java反射在框架里的应用 读取properties文件
2009-11-29 17:44 1391java 框架基础 ------------------- ... -
for java beginner 14 ArrayList HashSet HashCode(中)
2009-11-29 13:24 1153java 反射 数组的反射 ArrayList HashSe ... -
for java beginner13java 反射 数组的反射(上)其实是讲ArrayList HashSet HashCode
2009-11-29 12:35 939java 反射 数组的反射(上 ... -
for java beginner12数组的反射的应用
2009-11-29 10:04 1046java 反射 数组的反射 数组也是一种类型,当然可以反射 ... -
for java beginner11 java 反射 Method类
2009-11-29 08:30 1304java 反射 Method类 str1.charAt() ... -
for java beginner10 java 反射 Field类
2009-11-29 07:17 3565java 反射 Field类 -------用到一个bea ... -
for java beginner 9 java反射的概念和Constructor 类
2009-11-29 07:13 1414java 反射 的概念 和 Constructor 类 反 ... -
for java beginner 8 java 反射的基础基础Class的理解
2009-11-29 07:09 1040java 反射 的基础基础 Class的理解 反射 在 1 ...
相关推荐
这本书《Java-Programming-for-Beginner》将引领你走进这个充满无限可能的世界。Java以其“一次编写,到处运行”的特性,使得开发者可以在多种平台上无缝地运行代码,极大地提高了开发效率。 1. **Java基础知识**:...
本书首先会介绍Java开发环境的搭建,包括安装Java Development Kit(JDK)和配置开发环境变量。接着,读者将学习基础语法,如变量、数据类型、运算符、流程控制语句(如if、for、while)以及方法的定义和调用。在...
- **配置环境变量**:为了在命令行中能够直接使用Java命令,需要配置系统的PATH环境变量,指向JDK的bin目录。 - **验证安装**:通过命令行输入`java -version`来验证JDK是否正确安装。 #### 三、Java基础语法 - **...
【压缩包子文件的文件名称列表】"java-beginner-master" 可能表示这是一个Git仓库的主分支,通常包含一系列的源代码文件和相关的项目配置。"master"是Git中的默认分支名,通常存放着项目的主线开发代码。因此,解压...
1. **Java环境配置**:首先,学习Java需要安装Java Development Kit (JDK),设置好环境变量`JAVA_HOME`、`PATH`和`CLASSPATH`,确保能够顺利运行Java编译器`javac`和Java虚拟机`java`。 2. **基本语法**:学习Java...
- **QB.BI**:可能是QBasic的备份文件,用于恢复IDE的配置。 - **MOUSE.COM**:可能是一个DOS下的鼠标驱动程序,用于支持在QBasic程序中使用鼠标。 - **QCARDS.DAT**:可能是一个数据文件,用于QBasic程序的内部数据...
22. JVM(Java Virtual Machine):Java虚拟机,执行Java字节码的平台。 23. XML(Extensible Markup Language):可扩展标记语言,用于存储和传输结构化数据。 这些只是计算机科学和信息技术领域中众多术语的一...
1. **环境配置**:如何安装Java Development Kit(JDK),设置环境变量,以及使用集成开发环境(IDE)如Eclipse或IntelliJ IDEA进行编程。 2. **基础语法**:了解Java的基本数据类型(整型、浮点型、字符型、布尔型...
Ivan Idris以编写简洁可测试的程序代码以及撰写有趣的技术文章为乐,同时也是Packt出版社NumPy Beginner's Guide-Second Edition、NumPy Cookbook和Learning NumPy Array等书籍的作者。读者可以访问ivanidris.net...