- 浏览: 75452 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
覃永波:
引用[*][img][/img][url][/url]
java 读取txt,java读取大文件 -
bits00:
...
tcpdump网摘
对于一些常量我们经常放到property属性文件中.
今天在对其的存取过程中遇到了些问题:
1:取的时候掉了内容
2:取出后出现乱码
首先,我们的property文件大约如下:
news.link.inner.href = http: // www.baidu.com, http://www.baidu.com , http://www.baidu.com
new .link.inner.title = 百度1,百度2,百度3
1:取的时候掉了内容的解决:
当然我这个文件有些特殊,主要是针对跳转下拉菜单的数据设计(用户在日后扩展数据的时候只需在后面直接添加,但必须以","号分开).
在开始我以如下方法来取:
{
String innerlinkstr = null ;
String innertitlestr = null ;
String outerlinkstr = null ;
String outertitlestr = null ;
StringTokenizer innerlink = null ;
StringTokenizer innertitle = null ;
StringTokenizer outerlink = null ;
StringTokenizer outertitle = null ;
InputStream in = this .getClass().getResourceAsStream( " /conf/netedu.properties " );
try {
try {
Properties props = new Properties();
props.load(in);
innerlinkstr = props.getProperty( " news.link.inner.href " );
innertitlestr = props.getProperty( " new.link.inner.title " );
outerlinkstr = props.getProperty( " news.link.outer.href " );
outertitlestr = props.getProperty( " new.link.outer.title " );
innerlink = new StringTokenizer(innerlinkstr, " , " );
innertitle = new StringTokenizer(innertitlestr, " , " );
outerlink = new StringTokenizer(outerlinkstr, " , " );
outertitle = new StringTokenizer(outertitlestr, " , " );
innermap = this .getlinks(innertitle,innerlink);
outermap = this .getlinks(outertitle,outerlink);
}
finally {
in.close();
}
}
catch (Exception ex) {
log.debug( " Error to read property in /conf/netedu.properties file " );
}
}
getLinks的方法如下:
* @param titleargs 存放链接名称的StringTokenizer
* @param linkargs 存放链接地址的StringTokenizer
* return hashmap(title,link)
* 两个参数应该有相同的长度
*/
private HashMap getlinks(StringTokenizer titles, StringTokenizer links)
{
HashMap results = new HashMap();
for ( int i = 0 ;i < titles.countTokens();i ++ )
results.put((String)titles.nextElement(),(String)links.nextElement());
return results;
}
但到JSP显示的时候得到的results的长度为2,也就是只取出了文件中的百度1,百度2(乱码解决后才知道是这二个啦).在Eclipse中调试的时候发在getLinks方法中的for循环确实少执行了次!为什么?(搞不懂!郁闷了半天),不得不将此方法的代码加长些(真受不了)
* @param titleargs 存放链接名称的StringTokenizer
* @param linkargs 存放链接地址的StringTokenizer
* return hashmap(title,link)
* 两个参数应该有相同的长度
*/
private HashMap getlinks(StringTokenizer titles, StringTokenizer links)
{
HashMap results = new HashMap();
int len = titles.countTokens();
String[] temp1 = new String[len];
String[] temp2 = new String[len];
for ( int i = 0 ;i < len;i ++ )
{
temp1[i] = (String)titles.nextElement();
temp2[i] = (String)links.nextElement();
}
for ( int i = 0 ;i < len;i ++ )
{
results.put(temp1[i],temp2[i]);
}
return results;
}
这简直一样的处理啊?为什么结果会不同呢?
2:乱码处理
乱码其实简单,只是开始的时候没注意罢了.我们的机器编码应该是GBK方式的,而在JVM程序中读取Property文件的时候使用的是Unicode编码方式,(我的这些处理过程也没对编码文件请求进行过滤),所以我们可以对其进行对应的编码.
我是利用了JDK自带的native2ascii.exe工具.
通过--encoding 来指定其编码方式
native2ascii -encoding GBK sourcefilename destfilename
这样你在
InputStream in = this.getClass().getResourceAsStream("/conf/netedu.properties");
语句中用到的/conf/netedu.properties文件就是destfilename 来代替就OK了
只是这样你看到的可能是如下的一些代码:
news.link.inner.href http: // www.baidu.com, http://www.baidu.com , http://www.baidu.com
new .link.inner.title \u767e\u5ea61,\u767e\u5ea62,\u767e\u5ea63
当然你不可能对着一大堆的16进制看吧,所以可以通过 -reverse 来解码.
native2ascii -reverse sourcefilename destfilename
本人觉得对于大量文本的处理,比如说整个项目的国际化,这样可以通过对整个文件编码来处理,但若只是为了一个下拉框,就显得有些大材小用了(再说对用户来说,他们也得多一步去执行项目里的脚本代码).所以我们可以在叠代标题(这些就是"百度")StringTokenizer的时候对其重新编码.这时可用将getLinks()方法中的
{
temp1[i] = (String)titles.nextElement();
temp2[i] = (String)links.nextElement();
}
改成
{
String s = (String)titles.nextElement();
try {
temp1[i] = new String(s.getBytes( " ISO-8859-1 " ), " GBK " );
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
temp2[i] = (String)links.nextElement();
}
注意:"ISO-8859-1"与"GBK"对应的分别是源编码与目标编码方式.
关于native2ascii的详细用法,可以参考相关文档,as this:
native2ascii - Native-to-ASCII Converter
Converts a file with native-encoded characters (characters which are non-Latin 1 and non-Unicode) to one with Unicode-encoded characters.
SYNOPSIS
native2ascii [options] [inputfile [outputfile]]
DESCRIPTION
The Java compiler and other Java tools can only process files which contain Latin-1 and/or Unicode-encoded (\udddd notation) characters. native2ascii converts files which contain other character encodings into files containing Latin-1 and/or Unicode-encoded charaters.
If outputfile is omitted, standard output is used for output. If, in addition, inputfile is omitted, standard input is used for input.
OPTIONS
-reverse
Perform the reverse operation: convert a file with Latin-1 and/or Unicode encoded characters to one with native-encoded characters.
-encoding encoding_name
Specify the encoding name which is used by the conversion procedure. The default encoding is taken from System property file.encoding. The encoding_name string must be a string taken from the first column of the table below.
-------------------------------------------------------------
Converter Description
Class
-------------------------------------------------------------
8859_1 ISO 8859-1
8859_2 ISO 8859-2
8859_3 ISO 8859-3
8859_4 ISO 8859-4
8859_5 ISO 8859-5
8859_6 ISO 8859-6
8859_7 ISO 8859-7
8859_8 ISO 8859-8
8859_9 ISO 8859-9
Big5 Big5, Traditional Chinese
CNS11643 CNS 11643, Traditional Chinese
Cp037 USA, Canada(Bilingual, French), Netherlands,
Portugal, Brazil, Australia
Cp1006 IBM AIX Pakistan (Urdu)
Cp1025 IBM Multilingual Cyrillic: Bulgaria, Bosnia,
Herzegovinia, Macedonia(FYR)
Cp1026 IBM Latin-5, Turkey
Cp1046 IBM Open Edition US EBCDIC
Cp1097 IBM Iran(Farsi)/Persian
Cp1098 IBM Iran(Farsi)/Persian (PC)
Cp1112 IBM Latvia, Lithuania
Cp1122 IBM Estonia
Cp1123 IBM Ukraine
Cp1124 IBM AIX Ukraine
Cp1125 IBM Ukraine (PC)
Cp1250 Windows Eastern European
Cp1251 Windows Cyrillic
Cp1252 Windows Latin-1
Cp1253 Windows Greek
Cp1254 Windows Turkish
Cp1255 Windows Hebrew
Cp1256 Windows Arabic
Cp1257 Windows Baltic
Cp1258 Windows Vietnamese
Cp1381 IBM OS/2, DOS People's Republic of China (PRC)
Cp1383 IBM AIX People's Republic of China (PRC)
Cp273 IBM Austria, Germany
Cp277 IBM Denmark, Norway
Cp278 IBM Finland, Sweden
Cp280 IBM Italy
Cp284 IBM Catalan/Spain, Spanish Latin America
Cp285 IBM United Kingdom, Ireland
Cp297 IBM France
Cp33722 IBM-eucJP - Japanese (superset of 5050)
Cp420 IBM Arabic
Cp424 IBM Hebrew
Cp437 MS-DOS United States, Australia, New Zealand,
South Africa
Cp500 EBCDIC 500V1
Cp737 PC Greek
Cp775 PC Baltic
Cp838 IBM Thailand extended SBCS
Cp850 MS-DOS Latin-1
Cp852 MS-DOS Latin-2
Cp855 IBM Cyrillic
Cp857 IBM Turkish
Cp860 MS-DOS Portuguese
Cp861 MS-DOS Icelandic
Cp862 PC Hebrew
Cp863 MS-DOS Canadian French
Cp864 PC Arabic
Cp865 MS-DOS Nordic
Cp866 MS-DOS Russian
Cp868 MS-DOS Pakistan
Cp869 IBM Modern Greek
Cp870 IBM Multilingual Latin-2
Cp871 IBM Iceland
Cp874 IBM Thai
Cp875 IBM Greek
Cp918 IBM Pakistan(Urdu)
Cp921 IBM Latvia, Lithuania (AIX, DOS)
Cp922 IBM Estonia (AIX, DOS)
Cp930 Japanese Katakana-Kanji mixed with 4370 UDC,
superset of 5026
Cp933 Korean Mixed with 1880 UDC, superset of 5029
Cp935 Simplified Chinese Host mixed with 1880 UDC,
superset of 5031
Cp937 Traditional Chinese Host miexed with 6204 UDC,
&n0
发表评论
-
飞鸽收藏(转)
2012-04-27 18:18 1366我们常在局域网内用飞鸽进行沟通、文件传输。有天突发奇想,要是我 ... -
主题:边读边写【7】 ----java 多线程实战【Thread /Executors】(转)
2012-04-23 11:39 1389http://www.iteye.com/topic/1122 ... -
牢骚一下,JavaFx 2.0太坑人了
2012-04-18 20:45 17用了半周看了下JavaFx2.0 ,看官方例子感觉还不 ... -
Java中一些关于日期、日期格式、日期的解析和日期的计算 (转)
2012-04-12 11:00 0http://www.blogjava.net/Jkallen ... -
Java 系统运行时性能和可用性监控
2012-04-12 10:40 1182简介: 当今的许 ... -
Jconsole_一个监控JVM资源的JDK自带小工具 (转)
2012-04-12 10:32 1223最近一直忙着测一个tomcat的接口,测试中LR总出现2779 ... -
探索JVM运行状态的利器—JVMPI,HPROF_剑_百度空间 (引)
2012-04-12 10:29 1387.什么是JVMPI?Java Virtual ... -
JVM jvmpi (转)
2012-04-12 10:18 1571转自 http://chain.blog.163.com/bl ... -
java 格式化小数
2012-03-09 16:53 1522DecimalFormat 是 NumberForm ... -
org.apache.commons.net.ftp.FTPClient 例子(转)
2012-03-02 09:26 1463转自 http://zhangnet1.iteye.com/b ... -
java查询一次性查询几十万,几百万数据解决办法(转)
2012-02-29 09:15 1002java查询一次性查询几十万,几百万数据解决办法 很早 ... -
java 读取txt,java读取大文件
2012-02-26 19:39 2117java 读取txt,java读取大文件 设置缓存大小 ... -
StringUtils用法+StringUtils详细介绍
2012-02-26 19:38 933StringUtils用法+StringUtils详细介绍博文 ... -
java 字节流网址收藏(暂)
2012-02-07 10:43 749Java I/O关于缓冲区部分提高性能的源码分 ... -
String类substring方法导致的Java内存泄漏问题 (转)
2012-01-06 10:10 1447此问题在项目中被发现,经查看JDK源码(JDK1.6), ... -
Swing 线程之SwingUtilities.invokeLater()(转)
2012-01-06 10:00 1224声明:本文章转自 http://blog.csdn.ne ... -
Swing 线程之SwingUtilities.invokeLater() (转)
2012-01-06 09:59 2声明:本文章转自 http://blog.csdn.net/b ... -
Java Swing GUI多线程之SwingUtilities.invokeLater和invokeAndWait
2012-01-05 16:55 5438在Java中Swing是线程不安全的,是单线程的设计, ... -
用java.util.Timer定时执行任务
2012-01-05 16:11 844如 ... -
ubuntu java配置
2011-12-30 20:54 1082Ubuntu10.10安装sun-Java6-jdk ...
相关推荐
本文将深入探讨XML、Excel、TXT和Property文件的解析方法,并重点介绍使用Dom4j和JDOM等技术进行XML解析。 首先,XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛用于数据交换和配置文件。它的...
在Java编程语言中,Properties文件...在实际项目中,`property文件处理_V1.0`可能是一个包含`PropertyUtil.java`源代码和示例用法的库。开发人员可以导入这个库,快速集成Properties文件的读写功能,从而提升开发效率。
用 java 读取或写入 property
Property文件是Java中用于存储键值对的标准格式,通常以`.properties`为扩展名。这些文件可以包含纯文本信息,包括英文和中文,这对于国际化(i18n)的应用程序尤其重要。本篇文章将详细介绍如何在Java中读取和保存...
### Java对Property文件的操作 #### 一、概述 在Java开发中,经常需要读取配置文件来进行环境变量的设定或数据库连接等初始化工作。其中,`.properties`文件因其灵活且易于阅读的特点而被广泛采用。Java标准库提供...
7. **比较和合并**:对于多语言版本的`.properties`文件,插件可能支持比较不同语言版本的差异,并进行合并操作。 8. **版本控制集成**:与Eclipse的版本控制系统(如Git)无缝集成,方便团队协作,查看历史修改...
`PropertyGrid`还提供了一些事件,如`ValueChanged`和`GridChanged`,可以监听用户在`PropertyGrid`中所做的更改,并据此执行相应的操作。 ### 7. 应用到自定义类 如果你想让用户通过`PropertyGrid`编辑自定义类的...
- **删除操作**:从`Section`或ini文件中移除指定的`Property`,或者整个`Section`。 在实际编程中,这样的源码可能会提供API,例如`IniFile::load()`加载文件,`IniFile::save()`保存文件,`IniFile::findSection...
Apache POI提供了HPSF(Hierarchical Property Set Format)和HWPF(Horrible Word Processor Format)等组件,分别用于处理DOC和DOCX文件。 在实际的转换过程中,可能的步骤包括: 1. 使用HWPF读取DOC文件:首先,...
在Microsoft Foundation Classes (MFC)库中,"MFC单文档文件对话框propertysheet设置"涉及到的是创建和管理一个多页对话框的应用程序设计。Propertysheet(属性表)是Windows GUI中常见的一种界面元素,它允许用户...
Property文件是Java应用程序中常见的资源文件,用来存储字符串、消息或者其他与本地化相关的数据。 描述简短地提到了“eclipse插件”,这暗示我们将讨论的是如何在Eclipse中安装和使用特定的插件来增强对....
在Spring框架中,`@PropertySource`注解用于指定配置文件的位置,以便Spring可以在启动时自动加载这些属性值。在实际开发中,我们有时需要对这些配置文件进行加密,以增强系统的安全性。此外,除了传统的.properties...
运行这个文件可以更直观地了解控件的使用方式和功能。 总结起来,PropertyGrid控件是.NET开发中一个强大的工具,能够快速创建直观且功能丰富的设置界面。通过合理的属性标记和事件处理,我们可以创建出符合业务需求...
包含的多个ZIP文件(如“WPFPropertyGrid.rar”、“PropertyGrid_vc2010.zip”等)可能包含了使用`PropertyGrid`的示例项目和源代码。这些示例可以帮助你快速理解如何在实际项目中集成和自定义`PropertyGrid`,包括...
这些特性可以改变属性的显示方式,提供更丰富的编辑体验,比如选择日期、颜色、文件路径等。 在本示例"CustomerSetProperty"中,很可能展示了如何利用`propertyGrid`来编辑一个名为`CustomerSet`的类的实例。这个类...
Java属性工具库(Java Property Utils)是一个常用的Java开发中的组件,主要用来处理和操作Java的系统属性和配置文件。在Java编程中,属性文件通常用于存储应用的配置信息,如数据库连接字符串、日志级别等。`java-...
在C#编程中,修改文件属性的摘要信息通常涉及到对文件元数据的操作。这包括诸如作者、标题、创建日期等信息。在这个过程中,我们需要利用Windows操作系统提供的COM接口,特别是ole32.dll库中的功能。ole32.dll是系统...
标题提到的"C#自定义Property"主要涉及到如何自定义PropertyGrid来处理列表类型的属性,以便在界面上更友好地显示和操作。 在描述中,提到了一个常见问题:当属性是列表(如List)时,通常需要通过展开省略号(......
在IT领域,特别是软件开发与项目构建过程中,`Property`设置是极其常见且重要的操作。本文将深入探讨“Property设置属性的7种方法”,旨在帮助开发者理解和掌握多种灵活的属性配置方式,从而提升项目的可配置性和...
Eclipse 插件propertyEdit是专为Eclipse集成开发环境设计的一款实用工具,它主要功能是提供一个方便、直观的方式来查看和编辑项目中的属性文件。属性文件在Java开发中广泛使用,它们通常以.properties为扩展名,用于...