`
hubin4
  • 浏览: 97172 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

for java beginner 17 配置文件的知识

    博客分类:
  • JAVA
阅读更多
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里
那么 加载 个配置文件也是顺手之劳了
具体看代码吧::
-----------------------------------------------
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
		
	}
}

-----------------------------------------------------
分享到:
评论

相关推荐

    Java-Programming-for-Beginner:书

    这本书《Java-Programming-for-Beginner》将引领你走进这个充满无限可能的世界。Java以其“一次编写,到处运行”的特性,使得开发者可以在多种平台上无缝地运行代码,极大地提高了开发效率。 1. **Java基础知识**:...

    Java2:A Beginner's Guide Second Edition 原版 pdf

    本书首先会介绍Java开发环境的搭建,包括安装Java Development Kit(JDK)和配置开发环境变量。接着,读者将学习基础语法,如变量、数据类型、运算符、流程控制语句(如if、for、while)以及方法的定义和调用。在...

    java beginner guide

    - **配置环境变量**:为了在命令行中能够直接使用Java命令,需要配置系统的PATH环境变量,指向JDK的bin目录。 - **验证安装**:通过命令行输入`java -version`来验证JDK是否正确安装。 #### 三、Java基础语法 - **...

    java-beginner

    【压缩包子文件的文件名称列表】"java-beginner-master" 可能表示这是一个Git仓库的主分支,通常包含一系列的源代码文件和相关的项目配置。"master"是Git中的默认分支名,通常存放着项目的主线开发代码。因此,解压...

    Java-Beginner:《Java语言程序设计(基础篇)》课后编程练习题

    1. **Java环境配置**:首先,学习Java需要安装Java Development Kit (JDK),设置好环境变量`JAVA_HOME`、`PATH`和`CLASSPATH`,确保能够顺利运行Java编译器`javac`和Java虚拟机`java`。 2. **基本语法**:学习Java...

    高中学生可使用的qbasic语言

    - **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的基本数据类型(整型、浮点型、字符型、布尔型...

    python数据分析随书代码

    Ivan Idris以编写简洁可测试的程序代码以及撰写有趣的技术文章为乐,同时也是Packt出版社NumPy Beginner's Guide-Second Edition、NumPy Cookbook和Learning NumPy Array等书籍的作者。读者可以访问ivanidris.net...

Global site tag (gtag.js) - Google Analytics