java自动根据文件内容的编码来读取避免乱码

java自动根据文件内容的编码来读取避免乱码
java自动根据文件内容的编码来读取避免乱码

java自动根据文件内容的编码来读取避免乱码

通过cpdetector这个开源的jar包可以自动判断当前文件的内容编码,从而在读取的时候选择正确的编码读取,避免乱码问题。

测试结果,提供截图:

GBK文件内容

UTF8文件内容

运行结果:

package com.zuidaima.test;

import info.monitorenter.cpdetector.io.ASCIIDetector;

import info.monitorenter.cpdetector.io.CodepageDetectorProxy;

import info.monitorenter.cpdetector.io.JChardetFacade;

import info.monitorenter.cpdetector.io.ParsingDetector;

import info.monitorenter.cpdetector.io.UnicodeDetector;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

public class Main {

public static String getContent(String path) throws Exception {

File file = new File(path);

CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance ();

detector.add(new ParsingDetector(false));

detector.add(JChardetFacade.getInstance());

detector.add(ASCIIDetector.getInstance());

detector.add(UnicodeDetector.getInstance());

java.nio.charset.Charset charset = null;

try {

charset = detector.detectCodepage(file.toURI()。toURL());

} catch (Exception ex) {

ex.printStackTrace();

}

String charsetName = null;

if (charset != null) {

charsetName = https://www.360docs.net/doc/b58546265.html,();

} else {

charsetName = "UTF-8";

}

BufferedReader reader = new BufferedReader(new InputStreamReader (

new FileInputStream(file), charsetName));

String line = null;

String lines = "";

while ((line = reader.readLine()) != null) {

lines += line + "\n";

}

reader.close();

return lines;

}

public static void main(String[] args) throws Exception { System.out.println(getContent("bin/gbk.txt"));System.out.println(getContent("bin/utf8.txt"));

}

}

调用jar包外配置文件

项目中,经常把一部分功能独立出来,做一个java project,然后打成jar包供其他项目引用。这时候,如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采用jar包读取外部配置文件。案例: 项目工程名:auth -- 很明显,做鉴权使用的 项目配置文件:init.properties log4j.properties 项目引用jar包: lib/servlet-api.jar lib/log4j-1.2.15.jar lib/commons-collections-3.1.jar lib/commons-logging-1.0.4.jar lib/commons-pool.jar lib/ojdbc14.jar 读取配置文件示例: 目录结构如下:

解决方案I:自定义manifest.mf 文件 解释: Manifest-Version: 1.0 版本号,没啥特殊含义,但一定要有;Class-Path: 所有引用的jar包 注意: 每个“:”后面都要加空格,Class-Path中每个jar包间也加空格最后一行为空行 截图如下: b.通过Eclipse 到处jar包 右键项目工程----Export -- 选择Java下JAR File,下一步

件外部读取),选择导出jar包的位置; 注意:右侧的.classpath这些都不要选中,只把src下的java文件打包。

下一步 下一步:选中自定义的manifest.mf文件,完成 测试: 新建项目,导入刚刚生成的jar包和jar需要的所有包(把jar包所在工程lib下所有引用jar

JAVA读取jar包内部配置文件

package com.test; import java.io.File; import java.io.IOException; import java.io.InputStream; import https://www.360docs.net/doc/b58546265.html,.URL; import java.util.Properties; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class Test9 { public static void main(String[] args) throws IOException { String jarName="/test_p.jar";//Jar包所在的位置 String fileName="config/application.properties";//文件在jar包里的路径 String resource = Test9.class.getResource(jarName).getFile(); File file = new File(resource); JarFile jarFile = new JarFile(file);//读入jar文件 JarEntry entry = jarFile.getJarEntry(fileName); InputStream input = jarFile.getInputStream(entry);//读入需要的文件 Properties props = new Properties(); props.load(input); System.out.println(props.getProperty("Driver")); jarFile.close(); } }

读取配置文件和修改配置文件(ServiceIP.properties)(原创)

读取配置文件和修改配置文件(ServiceIP.properties)(原创) package espeed.util; import java.io.*; import java.util.Properties; /* * 配置短信服务器IP(配置文件建在SRC下,ServiceIP.properties) */ public class EditServiceIP { private static Properties properties=new Properties(); private static EditServiceIP esip; public EditServiceIP(){} public static EditServiceIP getInstance(){ if(esip==null) esip=new EditServiceIP(); return esip; } //取得短信服务器IP public String getSmsServiceIP(){ InputStream

is=EditServiceIP.class.getClassLoader().getResourceAsSt ream("ServiceIP.properties"); try { properties.load(is); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("------------取得短信服务器IP地址发生IO异常"); } String provalue=properties.getProperty("SMS.ServiceIP"); return provalue; } //修改短信服务器IP public String modifySmsServieIP(String smsServiceIP){ File file=new File(EditServiceIP.class.getClassLoader().getResource("S erviceIP.properties").getPath()); try{ properties.load(new FileInputStream(file));

Spring中加载xml配置文件的几种方式

项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,就总结了下Spring中加载xml配置文件的方式, xml是最常见的spring 应用系统配置源。Spring中的几种容器都支持使用xml装配bean,包括:XmlBeanFactory, ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, XmlWebApplicationContext, ..... 一: XmlBeanFactory 引用资源 1.Resource cr = new ClassPathResource("applicationContext.xml"); BeanFactory bf=new XmlBeanFactory(cr); UserDao userDao = (UserDao)bf.getBean("userDao"); 二: ClassPathXmlApplicationContext 编译路径 使用ClassPathXmlApplicationContext对象获取,必须把applicationContext.xml放置到类的加载路径中,也就是Src下面 1.ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml"); // src目录下的 2.ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)context.getBean("userDao"); 3.ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext-oracle.xml","applicationContext.xml"}); UserDao userDao = (UserDao)context.getBean("userDao"); // src/conf 目录下的 4.ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml"); 5.ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml"); 三: FileSystemXmlApplicationContext用文件系统

spring读取properties

spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 /db.properties 第二步: 在src目录下面建立db.properties文件 user=sa password=sa driver=com.microsoft.sqlserver.jdbc.SQLServerDriver url=jdbc:sqlserver://localhost:1433;databaseName=DB1 第三步: 在spring的配置文件中通过EL表达式的形式调用 ${user} /db.properties

总结一下java获取路径几种途径

总结一下java获取路径几种途径- - 在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealPath("/"); 这将获取web项目的全路径 例如 :E:\eclipseM9\workspace\tree\ tree是我web项目的根目录 2.你也可以随时在任意的class里调用 this.getClass().getClassLoader().getResource("/").getPath(); 这将获取到classes目录的全路径 例如 : E:\eclipseM9/workspace/tree/WEB-INF/classes/ 这个方法也可以不在web环境里确定路径,比较好用 3.request.getContextPath(); 获得web根的上下文环境 如 /tree tree是我的web项目的root context 获取web项目的全路径 Java路径问题最终解决方案 —可定位所有资源的相对路径寻址 前言 Java的路径问题,非常难搞。最近的工作涉及到创建和读取文件的工作,这里我就给大家彻底得解决Java路径问题。 我编写了一个方法,比ClassLoader.getResource(String 相对路径)方法的能力更强。它可以接受“.. /”这样的参数,允许我们用相对路径来定位classpath外面的资源。这样,我们就可以使用相对于classpat h的路径,定位所有位置的资源!

Java路径 Java中使用的路径,分为两种:绝对路径和相对路径。具体而言,又分为四种: 一、URI形式的绝对资源路径 如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b URL是URI的特例。URL的前缀/协议,必须是Java认识的。URL可以打开资源,而URI则不行。 URL和URI对象可以互相转换,使用各自的toURI(),toURL()方法即可! 二、本地系统的绝对路径 D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b Java.io包中的类,需要使用这种形式的参数。 但是,它们一般也提供了URI类型的参数,而URI类型的参数,接受的是URI样式的String。因此,通过URI转换,还是可以把URI样式的绝对路径用在java.io包中的类中。 三、相对于classpath的相对路径 如:相对于 file:/D:/java/eclipse32/workspace/jbpmtest3/bin/这个路径的相对路径。其中,bin是本项目的classpath。所有的Java源文件编译后的.class文件复制到这个目录中。 四、相对于当前用户目录的相对路径 就是相对于System.getProperty("user.dir")返回的路径。 对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。这个并没有统一的规范! 所以,绝对不要使用“相对于当前用户目录的相对路径”。然而: 默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性user.dir 指定,通常是Java 虚拟机的调用目录。 这就是说,在使用java.io包中的类时,最好不要使用相对路径。否则,虽然在J2SE应用程序中可能还算正常,但是到了J2EE程序中,一定会出问题!而且这个路径,在不同的服务器中都是不同的! 相对路径最佳实践 推荐使用相对于当前classpath的相对路径因此,我们在使用相对路径时,应当使用相对于当前classpath的相对路径。 ClassLoader类的getResource(String name),getResourceAsStream(String name)等方法,使用相对于当前项目的classpath的相对路径来查找资源。 读取属性文件常用到的ResourceBundle类的getBundle(String path)也是如此。 通过查看ClassLoader类及其相关类的源代码,我发现,它实际上还是使用了URI形式的绝对路径。

java读写Properties属性文件公用方法

java读写Properties属性文件公用方法 在Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。 Properties提供了如下几个主要的方法: 1.getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数key ,得到key 所对应的value。 2.load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(如test.properties 文件)进行装载来获取该文件中的所有键- 值对。以供getProperty ( String key) 来搜索。 3.setProperty ( String key, String value) ,调用Hashtable 的方法put 。他通过调用基类的put方法来设置键- 值对。 4.store ( OutputStream out, String comments),以适合使用load 方法加载到Properties 表中的格式,将此Properties 表中的属性列表(键和元素对)写入输出流。与load 方法相反,该方法将键- 值对写入到指定的文件中去。 5.clear (),清除所有装载的键- 值对。该方法在基类中提供。 以下提供一套读写配置文件的公用实用方法,我们以后可以在项目中进行引入。 import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileOutputStream;

Spring中使用classpath加载配置文件浅析

Spring中使用classpath加载配置文件浅析在应用Spring的工程中,使用class path的方式加载配置文件应该是最常用的做法,然而对大部分人来说,刚开始使用Spring时,几乎都碰到过加载配置文件失败的情况,除了配置上的错误外,很多时候是因为配置文件的路径和程序中指定的加载路径不一致,从而导致配置文件找不到,或是加载了错误地方的配置文件。本文将就Spring如何从class path中加载配置文件做一些简要的分析。 情形一:使用classpath加载且不含通配符 这是最简单的情形,Spring默认会使用当前线程的ClassLoader的getResource 方法获取资源的URL,如果无法获得当前线程的ClassLoader,Spring将使用加载类org.springframework.util.ClassUtils的ClassLoader。 1.当工程目录结构如图所示: 即配置文件放在bin目录中的conf文件夹里,这时使用 ApplicationContext context = new ClassPathXmlApplicationContext("conf/application-context.xml");来创建ApplicationContext对象的话,Spring将加载bin/conf目录下的application-context.xml 文件。Spring启动时的输出显示为: Loading XML bean definitions from class path resource [conf/application-context.xml] 2.当工程目录结构如图所示: 即bin目录下只有.class文件,没有配置文件,同时在工程属性的Java Build Path->Libraries 里导入conf.jar文件,jar文件结构如图所示:

java读JAR包里的配置文件

private static String getXmlContent()throws IOException { Reader f = new InputStreamReader(QueryWeather.class.getClass().getResourceAsStream("/weather/we ather.xml")); BufferedReader fb = new BufferedReader(f); StringBuffer sb = new StringBuffer(“”); String s = ""; while((s = fb.readLine()) != null) { sb = sb.append(s); } return sb.toString(); } package com.read; import java.io.*; public class Resource { public void getResource() throws IOException{ //返回读取指定资源的输入流 InputStream is=this.getClass().getResourceAsStream("/struts-default.xml"); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String s=""; while((s=br.readLine())!=null) System.out.println(s); } } 这个类是jar包中的类,同时jar根下还有个struts-default.xml文件。 ClassLoader classloader = Thread.currentThread().getContextClassLoader(); InputStream is = classloader.getResourceAsStream("com/xxx/xxxx/yourfile.xml"); 一般情况下properties文件都是在工程内使用的,如果application打成jar包之后,修改properties文件后就需要重新打jar,很麻烦。 于是把properties文件提到jar包统计目录,这样修改后不用重新打包了,用起来方便一点。 代码如下: String proFilePath = System.getProperty("user.dir") + "\\filename.properties";

读写properties配置文件时带上注释

Java使用jdk自带的类操作properties配置文件,特别是更改文件后会把注释全部删掉,再读时会不知道配置是什么意思,下面这个类是我自己写的不删除注释操作properties的类。 import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Properties; import java.util.Set; /** * 读取Properties配置文件,同时读出注释。注释在jdk源方法的LineReader中忽略, * * 此处改造LineReader,并添加存放的变量map * * 同时新加了getPropertyAndComment(key)方法,返回的字符串:如果有注释则为:值#注释,如果无注释,则为:值 * * 写入Properties方法是直接从网上下载的方法 * @author liuwei * */ public class ReadAndWriteProperties extends Properties { /** * */ private static final long serialVersionUID = 1L; public static void main(String[] args) throws Exception { //写入 // ReadAndWriteProperties properties = new ReadAndWriteProperties(); // FileOutputStream fileOutputStream = new FileOutputStream( // "D:/test.properties", true);

Spring框架配置文件的编写

实验2 IoC——Bean的创建、Bean的生命周期、字面值和 对象类型属性的注入 一、实验目的 1. 掌握Bean的实例化方法 2. 掌握基于配置文件的属性注入方法 3. 掌握基于注解的属性注入方法 二、实验器材 1. 计算机 三、实验内容 1. 建立Boss类和Car类 2. 使用XML配置文件方式创建Bean并注入属性 3. 使用注解方式创建Bean并注入属性 四、实验步骤 第一步:建立Boss.java和Car.java 第二步:使用XML配置文件的方式创建Bean并注入属性

factory-bean="instanceFactory" factory-method="createCar"> 第三步:使用注解的方式创建Bean并且注入属性 Boss.java Car.java 五、实验报告要求 1. 写出详细实现步骤

在JAVA文件中获取该项目的相对路径汇总

在JAVA文件中获取该项目的相对路径 conanpaul收录,使用标签:Java,时间:2007-10-31 10:54:28 | 相关网摘,我也收藏 1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:\xyz\test.txt 代表了test.txt文件的绝对路径。https://www.360docs.net/doc/b58546265.html,/index.htm也代表了一个URL绝对路径。 相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录, "../"代表上级目录。这种类似的表示,也是属于相对路径。 另外关于URI,URL,URN等内容,请参考RFC相关文档标准。 RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax, (https://www.360docs.net/doc/b58546265.html,/rfc/rfc2396.txt) 2.关于JSP/Servlet中的相对路径和绝对路径。 2.1服务器端的地址 服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的 (不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候 在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。 其用到的地方有: forward:servlet中的request.getRequestDispatcher(address);这个address是 在服务器端解析的,所以,你要forward到a.jsp应该这么写: request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp, 其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。 sendRedirect:在jsp中 2.22、客户端的地址 所有的html页面中的相对地址都是相对于服务器根目录(http://192.168.0.1/)的, 而不是(跟目录下的该Web应用的目录)http://192.168.0.1/webapp/的。 Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的, 所以,如果提交到a.jsp为:action="/webapp/user/a.jsp"或action=""/user/a.jsp; 提交到servlet为actiom="/webapp/handleservlet" Javascript也是在客户端解析的,所以其相对路径和form表单一样。

Java读取配置文件做法

Java读取Properties文件的六种方法 使用J2SE API读取Properties文件的六种方法 1。使用java.util.Properties类的load()方法 示例:InputStream in = new BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2。使用java.util.ResourceBundle类的getBundle()方法 示例:ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); 3。使用java.util.PropertyResourceBundle类的构造函数 示例:InputStream in = new BufferedInputStream(new FileInputStream(name)); ResourceBundle rb = new PropertyResourceBundle(in); 4。使用class变量的getResourceAsStream()方法 示例: InputStream in = JProperties.class.getResourceAsStream(name); Properties p = new Properties(); p.load(in); 5。使用class.getClassLoader()所得到的https://www.360docs.net/doc/b58546265.html,ng.ClassLoader的getResourceAsStream()方法 示例:InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); 6。使用https://www.360docs.net/doc/b58546265.html,ng.ClassLoader类的getSystemResourceAsStream()静态方法示例: InputStream in = ClassLoader.getSystemResourceAsStream(name); Properties p = new Properties(); p.load(in); 补充 Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法 示例:InputStream in = context.getResourceAsStream(path); Properties p = new Properties(); p.load(in);

JAVA中读写配置文件

JAVA中读写配置文件 2007-12-22 java中读写属性文件 下面的文章来自CSDN hyde82的专栏,因为很实用,所以就摘下来放在此处,具体网址忘记啦. 无论是有图形化的选项配置对话框,或者是系统提供的注册表,文本形式的本地配置文件依然是最牢靠、应用最广泛的配置信息保存形式。配置信息的一般模式就是一个配置项对应一个值,前者一般是个字符串,后者可能是数字或者字符串或者别的什么。在传统win32编程中有系统提供的api供我们解读.ini文件,后来也有操作注册表的封装好的api,在.net 中更是有解读XML形式.config文件的现成方法。在Java中,对配置文件的使用进行封装也是十分有意义的。 封装应该达到这样的效果:应用只管从配置信息进行按名读取值、设置值、保存等操作,而不需要关心具体以什么文件格式保存、如何解析。文件格式(纯文本?XML?数据库?)、IO 方式(本地文件?远程文件?控制台流?)在封装类内部的变更,都不会影响应用对配置信息的感知。 从键名-值的对应关系以及文件的存取,我们最容易想到的就是java.util.Properties对象,他是HashTable的子类,保存的就是很多组键名-值的对应二原组,并提供快速的查询和直接的从文件读取、保存为文件的方法。具体请参考相关文档,我们直接看程序。

首先自定义一个异常: //ConfigurationException.java package configuration; public class ConfigurationException extends Exception{ public ConfigurationException(){} public ConfigurationException(String msg){ super(msg); } } 然后是我们的封装类: //Configuration.java package configuration; import java.io.*; import java.util.*; import configuration.*; public class Configuration { private Properties config=new Properties();//记录配置项

java读取XML文件内容的四种方法

Java parse XML methods(4) 关键字: xml 1. 介绍 1>DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2>SAX SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。 选择DOM还是选择SAX?对于需要自己编写代码来处理XML文档的开发人员来说,选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX 采用的事件模型。 DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用 navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。 SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。 3>JDOM https://www.360docs.net/doc/b58546265.html, JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。 JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。 JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”(根据学 习曲线假定为20%)。JDOM对于大多数 Java/XML应用程序来说当然是有用的,并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM或JDOM接口都更有意义的工作。

读取Properties文件六种方法

读取Properties文件六种方法 开发项目时,经常把一些参数存入Properties文件,以增加程序的灵活性。我们可以通过以下六种方法读取配置参数(注意:spring对properties的读取也有很好的集成): 1、使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2、使用java.util.ResourceBundle类的getBundle()方法 示例: ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); 3、使用java.util.PropertyResourceBundle类的构造函数 示例: InputStream in = new BufferedInputStream(new FileInputStream(name)); ResourceBundle rb = new PropertyResourceBundle(in); 4、使用class变量的getResourceAsStream()方法 示例: InputStream in = JProperties.class.getResourceAsStream(name); Properties p = new Properties(); p.load(in); 5、使用class.getClassLoader()所得到的https://www.360docs.net/doc/b58546265.html,ng.ClassLoader的getResourceAsStream()方法 示例: InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);

Java中的Properties集合

Java中的Properties集合 1.Properties集合的特点: (1)该集合的键和值都是字符串类型的; (2)集合中的数据可以保存到流中,或者从流中获取; 2.通常该集合用于操作以键值对形式存在的配置文件。 3.配置文件:就是存储配置信息的文件。XML文件、数据库 4.构造方法: 5.常用方法: (1)存储元素:setProperty (2)修改元素:setProperty键相同,值不同即是修改。 (3)取出元素:getProperty

(4)list方法:主要用于调试。 参数是PrintStream ,默认的输出设备。如参数为System.out 例如:public static void main(String[] args) { //下午9:15:01 Properties pro = new Properties(); pro = System.getProperties(); pro.list(System.out); } (5)System.getProperties()返回系统的所有的配置信息,返回类型为Properties集合,在调用list方法就可打印到控制台(System.out)上。 (6)存储方法store方法:持久化,将集合中的字符串键值信息持久化存储到文件中,因此需要关联输出流。字节输出流或者字符输出流。

Properties p = new Properties(); p.setProperty("aaa","111"); p.setProperty("aaa2","1112"); p.setProperty("aaa3","1113"); p.setProperty("aaa4","1114"); p.setProperty("aaa5","11165"); FileOutputStream fos = new FileOutputStream("e:\\info.txt");//字节输出流 FileWriter fw = new FileWriter("e:\\info2.txt");//字符输出流 p.store(fos,"info"); p.store(fw,"info2"); fos.close(); fw.close(); (7)l oad方法:将流中的信息存储到Properties集合中。 load方法的原理: private static void myLoad(Properties p) throws IOException { System.out.println("**************************"); BufferedReader bufr = new BufferedReader(new FileReader("e:\\info.txt")); String line = null; while((line = bufr.readLine()) != null) { if(line.startsWith("#")) { continue; } String[] arr = line.split("="); System.out.println(arr[0] +" = " +arr[1]); p.setProperty(arr[0],arr[1]); } bufr.close(); } 6.集合中的数据来自一个文件,注意:必须要保证该文件中的数据是键值对,需要使用输 入流即读取流InputStream或者Reader。 FileInputStream fis = new FileInputStream("e:\\info.txt"); p.load(fis);//将流中的信息存储到Properties集合中

相关主题
相关文档
最新文档