- 浏览: 505566 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (155)
- jQuery (12)
- java基础 (21)
- hibernate错误 (2)
- myeclipse快捷键 (1)
- hibernate (5)
- javaWeb (1)
- tomcat (4)
- oracle (7)
- 用命令导入导出数据库 (1)
- ssh整合类 (2)
- struts2 (7)
- spring (0)
- html (3)
- xml操作 (1)
- linux (4)
- cad (1)
- log4j日志配置 (4)
- MyEclipse (8)
- struts1 (3)
- 正则表达式 (3)
- struts标签 (1)
- poderdesinger (1)
- javascript (10)
- linux 客户端 (2)
- webProjectProblem (4)
- sql 问题 (1)
- 文件下载问题 (1)
- js正则表达式 (1)
- java 乱码问题 (1)
- mysql (6)
- 生活随笔 (3)
- 文件上传 (3)
- 电影 (1)
- json (1)
- 理论概念 (1)
- 总结 (1)
- ssh项目错误 (2)
- sql (3)
- powerdesinger (1)
- 导入exce数据 (1)
- windows cmd命令 (1)
- weblogic (1)
- 分页功能 (1)
- ssh 问题 (1)
- 项目问题积累总结 (5)
- 发散思维 (1)
- idea (1)
最新评论
-
tecwang:
DiskFileItemFactory类 -
Yimmm:
DiskFileItemFactory类 -
qmgrx2007:
引用
DiskFileItemFactory类 -
逆风翔:
校验特殊字符中的—再校验到 含有字符mda ...
js中用正则表达式 过滤特殊字符 ,校验所有输入域是否含有特殊符号 -
pineapple_zjw:
谢谢分享 学习ing
java拼接和解析json
最近在重构自己的小Demo 想把自己的下Demo 变成可以配置的程序。但是遇到了一些困难,走了不少的弯路,最终还是解决了。 如果你是个牛人,你不用看了,写这些东西是给和我一样的菜鸟看的。
先说说我的Demo吧,我写的是一个简单新闻管理系统,很简陋的那种,不过麻雀虽小,但是五脏俱全。
基本的增、删、查、改,都有,用到了FCKeditor。一开始我连接数据库用的是最原始的方法,把数据库的连接信息全写在代码里,写完以后就没去管他了,十一放假这几天,看了看自己的代码,觉得代码结果不好,于是就开始重构自己的代码,首先就是重写数据库的连接管理我把连接数据库的一些基本信息写到了database.properties 文件里,然后从程序中读取连接数据库所需要的信息。但是看似简单的东西,比且很容易的完成的工作,我却遇到了不少麻烦。首先就是路径的问题,其次是该以何种方式读取;就这两个问题困扰了两天。(呵呵,见笑了)
java读取propterties文件有三种方法:
Class.getResourceAsStream ("/some/pkg/resource.properties");
ResourceBundle.getBundle ("some.pkg.resource");
注意括号中代码的不同。
先让大家看一段代码吧:
DataSource.java 文件:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*一个单子设计模式数据库连接
* @author guanminglin
*/
public class DataSource {
public static Connection conn;
public DataSource() throws IOException {
{
try {
Properties props = new Properties();
//一定要用DataSource
InputStream in = DataSource.class.getResourceAsStream("/org/news/comm/database.properties");
//原先试过这下面两种方法,但是都不行
//FileInputStream in = new FileInputStream("database.properties");
//InputStream in = Object.class.getResourceAsStream("/org/news/comm/database.properties")
//下面两行是用来测试的
String s = in.toString();
System.out.println("s=="+s);
props.load(in);
in.close();
String drivers = props.getProperty("jdbc.drivers");
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
Class.forName(drivers);
conn = DriverManager.getConnection(url, username, password);
in.close();
} catch (SQLException ex) {
Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
/**
*如果连接为空则建立一个新连接
* @return
*/
public static Connection getConnection() throws IOException {
if (conn == null) {
new DataSource();
}
return conn;
}
public void test(){
String str = new String();
}
public static void main(String[] args) throws IOException {
// TODO code application logic here
//用于测试
new DataSource();
System.out.print(conn);
}
}
我的文件包结构:
第一个要说的是:FileInputStream in = new FileInputStream("database.properties");
网上有很多人说这条语句是从当前目录中加载database.properties文件的,但是我得出的结果是:它是从classpath 中加载database.properties文件的。
因为我用的是IDE 是NetBeans 我以为直接放在当前包内就可以了,但是我发现这样不行。具体放哪里我也不知道,后来用了另一种方法:
InputStream in = Object.class.getResourceAsStream("/org/news/comm/database.properties")
基本上是可以用了,一开始测试的时候还挺开心的。很顺利的就通过了,但是当我真正运行项目的时候问题又来了,程序报了 空指针引用 错误。我就很纳闷了为什么在单个文件里测试可以很容易的通过,一运行项目就会报错呢?于是开始Debug,不Debug 不知道,一用吓一跳:
InputStream in = Object.class.getResourceAsStream("/org/news/comm/database.properties")
in的值竟然是空的,难怪会报空指针错误了。单独测试DataSource.java文件的时候运行正常啊,没有报错,in 也有值,但是为什么运行项目的时候又没有值了呢?很是不解。
于是我google 了一把,最后看现了几篇好文章 说的是如何读取 propterties 文件。最终我发现用第二种
方法是有弊端的,关键就在Object 上,它所有类的父类,在单个文件中用他来读取propterties文件还可以但是一运行项目,他就不起作用了,也不知道为什么。难道是java 的bug??或者说是NetBeans的bug??
我同样的Eclipse 下测试过,结果是一样的。
最后我将输入流语句稍微改了一下,变成下面的样子:
InputStream in = DataSource.class.getResourceAsStream("/org/news/comm/database.properties")
其实就是改个类名而已,让他自身去定位propterties文件,就解决问题了。(注意括号中红色的部分,org前面的 "/" 绝对不能少,要不然会报错的。)
无论是测试单文件还是,测试整个项目都没问题了。(那个高兴啊)
database.propterties 文件很简单:
jdbc.url = jdbc:mysql://localhost:3306/news
jdbc.username = root
jdbc.password = root
总结一下读取propterties文件方法的不同:(JavaWorld里的内容,呵呵拿来用一下)
Behavioral differences
|
推荐给大家一篇JavaWorld里面好的文章,里面讲述使用不同方式读出propterties文件的方式,以及他们之间的不同:Smartly load your properties
发表评论
-
如何把字符串转化成整形 不用javaapi的方法
2013-07-03 15:03 1527参考 :http://blog.csdn.net/great ... -
指定java编译时的编码
2012-09-20 15:00 1480指定java编译时候的编码:javac -encoding 编 ... -
枚举类的编写和调用
2012-04-10 10:29 1235编写: public enum enumTest { ... -
response.setHeader()的用法[转载]
2012-04-01 13:54 1010转自:http://www.cnblogs.com/quanj ... -
iterator 例子
2012-01-15 16:56 1081import java.util.Arrays;import ... -
DiskFileItemFactory类
2012-01-06 15:30 44515转自:http://blog.csdn.net/chinali ... -
System.getProperty(String key)[转]
2011-12-26 11:17 1410转自:http://i.mtime.com/zhd/blog/ ... -
在catch中使用throw,finally中的语句是否会执行?
2011-09-29 15:09 2665public class Exceptiontest{ p ... -
java冒泡排序算法 (转)
2011-09-16 20:39 1105java冒泡排序算法 面试老考这个,都背熟了 1p ... -
面试总结 不断ing
2011-09-02 18:13 881面试总结 2011/9/2 1 将两个表的结果集联合起来 ... -
java 编译器 虚拟机 解释器 即时编译器 (转)
2011-09-01 18:08 1221什么是java虚拟机: ... -
JAVA虚拟机工作原理 (转)
2011-09-01 18:07 1453JAVA虚拟机工作原理 2009-04-11 21:41 ... -
split方法的应用和去除list中相同的元素【转】
2011-08-03 10:40 1162public class testJava { publi ... -
数组转化为list【转】
2011-08-02 13:35 1351import java.util.* ;public cl ... -
便利map
2011-08-01 20:16 1878import java.util.ArrayList;impo ... -
Java注释规范{转}
2011-07-28 16:38 949Java代码规范 --注释 ... -
java 动态数组
2011-07-19 15:22 2369Java动态数组是一种可以 ... -
toString方法
2011-06-26 20:44 1011public class Test { public stat ... -
遍历set
2011-06-26 20:17 1048Iterator it = set.iterator(); ... -
java 从文件中读取信息(测试过成功)
2011-06-15 16:41 1649import java.io.File;import j ...
相关推荐
java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt...
解决Java读取CSV文件中文乱码问题的步骤如下: 1. **指定字符编码**:在使用`BufferedReader`或者`FileReader`读取文件时,应明确指定编码。例如,使用`InputStreamReader`构造函数可以传入编码类型,如`new ...
根据给定的文件信息,我们可以总结出一系列关于Java中读取文件的方法,这些方法涵盖了不同层次的数据读取,包括字节、字符以及行级别的读取。以下是对这些知识点的详细阐述: ### Java读取文件方法大全:读取File流...
Java读取大文件的处理是Java编程中的一项重要技术,特别是在处理大文件时需要注意性能和响应速度。下面我们将对Java读取大文件的处理技术进行详细的介绍。 标题解释 Java读取大文件的处理是指使用Java语言来读取大...
JAVA实现远程文件读取 JAVA是一种广泛应用于软件开发的编程语言,随着网络技术的发展,JAVA也提供了许多支持...JAVA实现远程文件读取技术可以广泛应用于各种文件共享和文件传输场景,提高了文件处理的效率和灵活性。
本篇文章将深入探讨如何使用Java来读取TIFF文件,并获取其尺寸——即图像的宽度(长)和高度。 在Java中,处理TIFF文件通常需要借助第三方库,因为Java的标准API(如`java.awt.image.BufferedImage`)并不直接支持...
总结来说,解决Java读取Excel内存溢出问题,关键在于合理利用资源、优化代码逻辑以及选择适合的API,如Apache POI的SXSSF。通过这些方法,我们可以在不显著增加系统资源负担的情况下,高效地处理大Excel文件。
### Java读取SHP文件及DBF属性的关键技术解析 #### 概述 在地理信息系统(GIS)领域,Shapefile是一种常见的矢量数据格式,用于存储地理位置信息及相关属性数据。一个完整的Shapefile由多个文件组成,包括.shp、....
在提供的压缩包中,有一个名为"ucanaccess-2.0.9.2.jar"的文件,这是UCanAccess驱动,它是一个开源的Java库,允许Java应用程序直接操作.MDB和.ACCDB格式的Access数据库,而无需安装任何Microsoft软件。要使用这个...
在Java编程中,读取配置文件是常见的任务,特别是在开发需要灵活配置的系统时。配置文件通常用于存储应用程序的设置,如数据库连接信息、服务器端口、第三方服务的API密钥等,这些信息可能需要根据不同的环境或需求...
在Java编程环境中,读取INI配置文件是一项常见的任务,这些文件通常用于存储应用程序的设置或配置参数...通过理解其内部实现,我们可以轻松地在Java程序中读取和操作这些配置文件,从而更好地管理我们的应用程序设置。
java读取txt文件,可以以文件路径构造这个流,:FileInputStream fin = new FileInputStream("d:/test.txt"); 然后使用这个流直接读取到文件,再使用reader构造BufferedReader,按行读取一整行的文本,作为字符串返回...
总结起来,Java中按顺序读取文件主要依赖于I/O流,特别是`FileReader`和`BufferedReader`类的组合。理解这些基本概念和操作对于任何Java开发者来说都是至关重要的,因为它们构成了处理文件数据的基础。在实际编程中...
在Java编程中,读取本地SQLite数据库(.db文件)是一项常见的任务,特别是在移动应用开发或者需要离线存储数据的场景下。SQLite是一种轻量级的、开源的关系型数据库,它不需要单独的服务器进程,可以直接在应用程序...
在Java编程中,读取和写入TXT文件时,经常遇到中文乱码的问题。这是因为Java默认的字符编码可能与TXT文件的实际编码不一致,导致字符无法正确解析。本篇文章将深入探讨这个问题,并提供完整的源码解决方案。 首先,...
在Java编程环境中,处理共享文件是一项常见的任务,特别是在企业级应用中,可能需要访问网络上的文件系统资源。Java提供了一些库来实现这一功能,其中之一就是jcifs库,它是一个开源的Java SMB(Server Message ...
总结一下,处理Java中的Properties文件读写时,需要注意文件路径的准确性、文件的读写权限以及缓存问题。通过以上方法,应该能够有效解决描述中提到的问题。对于提供的"新建文本文档.txt",虽然不是Properties文件,...
为了解决这个问题,可以使用 javacsv 库,javacsv 库可以正确地读取 CSV 文件,包括特殊字符的处理。 以下是使用 javacsv 库读取 CSV 文件的示例代码: Java 代码: ```java public List[]> importCsv(String file...
本篇文章将重点讲解如何使用Java读取NetCDF文件以及生成等值线的实现方法,主要涉及两个关键库:netcdf-4.3.22.jar和wContour.jar。 首先,`netcdf-4.3.22.jar`是Unidata开发的Java NetCDF库,它提供了全面的功能来...
java通过snakeyaml类能非常方便的操作,读写yaml文件。