`
pleasetojava
  • 浏览: 744665 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java实用经验总结--其他

阅读更多
Java实用经验总结--其他
1. Map的遍历
有人看了这个标题可能发笑,因为这实在太简单,难道我在凑字数?可是根据我自己的经验来说,人的岁数长的时候记忆力却不跟着长,倒有不进反退的现象。我就是虽然写过很多遍但仍然用到的时候就忘个干净,在这里写一下强化记忆J
SortedMap pDataMap = new TreeMap();
Iterator itor = pDataMap.entrySet().iterator();
while(itor.hasNext()){
Map.Entry vEntry = (Entry) itor.next();
vEntry.getKey();
vEntry.getValue();
//做一些其他的事……
}
2. 文件操作
本文主要关注简单的对象序列化的相关操作,对于更为详细的操作过程,请参照《Java编程思想 2e》。
2.1.文件过滤器
文件过滤器主要用在FileChooser或者File.listFiles()方法中,用于过滤掉一些与本程序无关的类型文件。本例给出一个察看给定文件后缀名的文件过滤器,对于给定的文件察看其文件名,如果和给定的后缀名一致则返回true,否则返回false。
publicclass RecorderFileFilter implements FilenameFilter
{
/**后缀名 **/
String postfixStr;
public RecorderFileFilter(String postfix){
this.postfixStr = postfix;
}
publicboolean accept(File dir, String name) {
/**只判断后文件的缀名是否正确即可 **/
if( name.endsWith(postfixStr) )
returntrue;
else
returnfalse;
}
}
2.2.对象的保存与读取
首先介绍一下我的程序的存储结构:我的数据保存在两种类型的文件中,即“时间字符串.data”和“时间字符串.plan”两种类型。其中.data文件是一个HashMap<String,String>类的序列化文件,而.plan文件是一个SortedMap<String,String>类的序列化文件。他们都保存在“user.dir/data”目录下。下面的这些方法的功能是读取/保存这个目录下数据文件,如果你想保存你自定义的文件到指定目录,下面的代码至需要稍微修改一下即可使用:
/**用以标识读入数据的类型,也是文件后缀名**/
publicstaticfinal String DATA_TYPE = ".data";
publicstaticfinal String PLAN_TYPE = ".plan";
/**以程序运行目录作为基目录**/
publicstatic File appDir = new File(System.getProperty("user.dir"));
publicstatic File imgDir = new File(appDir,"img");
publicstatic File dataDir = new File(appDir,"data");
publicstatic File reportDir = new File(appDir,"report");
publicstatic FileInputStream fIn;
publicstatic FileOutputStream fOut;
publicstatic ObjectInputStream objIn;
publicstatic ObjectOutputStream objOut;
/**---------------功能函数部分----------------------**/
/**
*查找并读入"user.home/data/"目录下所有的记录文件,将其放到一个Map
*HashMapKey为文件名,也是欠款人帐户的ID号。
*关于获得的文件的具体信息请参照技术说明书。
*如果pType=DATA_TYPE,则dataMap的格式为<String,HashMap>
* pType=PLAN_TYPE,则dataMap的格式为<String,SortedMap>
*@returnSortedMap
*/
publicstatic HashMap loadAll(String pType){
/** 数据文件名(简历账号的时间)即为ID **/
HashMap vDataMap = new HashMap();
/**后缀名为data的即为数据文件**/
File[] dataFiles = dataDir.listFiles(new RecorderFileFilter(pType));
for(int i = 0; i < dataFiles.length; i++){
try{
if( pType.equals(FileUtil.DATA_TYPE) ){
HashMap<String,String> hMap = (HashMap<String,String>)loadObjectFromFile(dataFiles[i]);
/**去掉文件名的后缀名即或得key,也就是欠款帐户ID**/
vDataMap.put(hMap.get("id"),hMap);
}elseif( pType.equals(FileUtil.PLAN_TYPE) ){
SortedMap<String,SortedMap> hMap = (SortedMap<String,SortedMap>)loadObjectFromFile(dataFiles[i]);
/**去掉文件名的后缀名即或得key,也就是欠款帐户ID**/
vDataMap.put(StringUtil.clearFileName(dataFiles[i]) ,hMap);
}else
thrownew Exception("读取了错误的文件类型");
}
catch(Exception ex) {
MessageUtil.showErrMsg("读取数据时出现错误,数据有可能丢失!"+
"\n 文件名为:"+dataFiles[i].getName());
}
}
returnvDataMap;
}
/**
*将给定内容存入文件中.
*@parampContentMapMap其所装内容为<id(String), HashMapSortedMap>
*/
publicstaticvoid saveAll(HashMap<String,String> pDataMap,SortedMap<String,String> pPlanMap){
Iterator itor = pDataMap.entrySet().iterator();
while(itor.hasNext()){
Map.Entry vEntry = (Entry) itor.next();
String id = (String) vEntry.getKey();
saveToFile(id,pDataMap,pPlanMap);
}
}
/**
*将制定欠款账户的信息存入文件中
*@paramidString 这个信息在保存欠款协议时不可或缺
*@parampDataMapSortedMap
*@parampPlanMapSortedMap
*/
publicstaticvoid saveToFile(String id, HashMap<String,String> pDataMap,
SortedMap<String,String> pPlanMap){
try{
if( pDataMap != null )
saveObjectToFile(new File(dataDir,id+DATA_TYPE), pDataMap);
if( pPlanMap != null )
saveObjectToFile(new File(dataDir,id+PLAN_TYPE), pPlanMap);
}
catch(Exception ex) {
MessageUtil.showErrMsg("保存数据时出现错误,数据没有被正确保存!");
}
}
/**
*将文件中的序列化对象读出来
*@parampFileFile
*@returnObject
*@throwsException
*/
publicstatic Object loadObjectFromFile(File pFile) throws Exception {
fIn = new FileInputStream(pFile);
objIn = new ObjectInputStream(fIn);
Object obj = objIn.readObject();
fIn.close();
objIn.close();
return obj;
}
/**
*将对象序列化到相应的文件中去--保存数据时候专用,因为该函数将数据保存在appDir/data目录下
*@parampFileNameString
*@paramobjObject
*@throwsException
*/
publicstaticvoid saveObjectToFile(File pFile,Object pObj) throws Exception
{
fOut = new FileOutputStream(pFile);
objOut = new ObjectOutputStream(fOut);
objOut.writeObject(pObj);
fOut.close();
objOut.close();
}
2.3.其他
由于每个程序都有图标文件,所以从制定目录读入图标应该是每个程序都会用到的。其次,删除指定目录下的指定类型文件似乎也很常用J
/**img文件夹中获取图标**/
publicstatic ImageIcon getImageIcon(String pImageFileName){
File imgFile = new File(imgDir,pImageFileName);
ImageIcon imageIcon = new ImageIcon(imgFile.getAbsolutePath());
return imageIcon;
}
/**清除reportDir目录下所有html文件**/
publicstaticvoid clearReportFiles(){
File vReportDir = new File(reportDir.getAbsolutePath());
File[] vReportFiles = vReportDir.listFiles(new FilenameFilter(){
publicboolean accept(File dir, String name){
if( name.endsWith("html"))
returntrue;
returnfalse;
}
});
for(int i = 0; i < vReportFiles.length; i++)
vReportFiles[i].delete();
}
分享到:
评论

相关推荐

    Java实用经验总结--日期、数字篇

    在处理日期时,我们常常需要考虑到不同国家和地区的日期格式,但在这个经验总结中,我们将集中讨论不涉及国际化和复杂格式的情况。 在Java中,`java.util.Date` 类曾被广泛用于日期操作,但由于它的设计问题,现在...

    阿里巴巴java性能调优实战-最新经验总结 PDF

    本文基于《阿里巴巴Java性能调优实战-最新经验总结》的内容,围绕Java性能调优这一主题,从多个角度出发,详细介绍了一系列实用的方法和技术。 #### 二、扎实的计算机基础 1. **计算机组成原理**:了解计算机硬件...

    Think-in-JAVA-4th-Edition

    - **实用性**: 提供超过320个实用的Java程序示例,共计15000多行代码,帮助读者理解复杂的编程概念。 - **全面性**: 内容涵盖了Java从基础到高级的各个方面,适合不同层次的学习者。 - **与时俱进**: 虽然主要基于...

    基于java的-151-springboot大学生就业服务平台-源码.zip

    总结来说,这个基于Java的SpringBoot大学生就业服务平台是一个很好的学习案例,涵盖了现代Web开发中的诸多技术,包括但不限于SpringBoot框架的使用、Java编程、数据库交互以及前后端交互等。对于初学者,可以通过...

    Java垃圾回收精粹-Part4Java开发Java经验技

    本篇将深入探讨Java垃圾回收的精华部分,以及在Java开发过程中的一些实用技巧。 一、垃圾回收的基本原理 Java的垃圾回收机制主要目标是识别并回收不再被程序引用的对象所占用的内存。它通过跟踪对象的可达性来判断...

    java程序设计--售票系统

    ### Java程序设计——售票系统知识点总结 #### 一、项目背景与目的 - **选题目的及意义**:本项目的主要目标是响应信息技术发展带来的新型购票需求,通过开发一款便捷高效的购票软件,满足用户在线购买各类交通...

    JAVA课程设计--运动会成绩管理系统.doc

    通过这个项目,开发者可以深入理解如何通过Java语言构建一个实用、用户友好的成绩管理系统,同时也能学习到在软件开发中如何有效地运用设计原则和最佳实践,这对于未来在大型应用系统开发中有着极大的指导意义。

    java毕业实习报告-1.docx

    Java 实习报告是学习者在进行Java软件开发实习过程中的总结,它强调了实习项目的重要性和选择项目的关键因素。在Java实习中,项目练习不仅帮助学习者巩固理论知识,更提供了实践开发经验,这对于就业培训至关重要。 ...

    eclipse-java-helios-SR2-win32

    ### Eclipse Java Helios SR2 Win32:软件缺陷检测与消除技术 #### 一、概述 根据提供的文件信息,本文档主要围绕软件开发中的一个重要话题——如何避免、查找及消除软件缺陷(通常称为“bug”)。该文档由 Saman ...

    java课程设计报告-java课程设计.pdf

    通过本次Java课程设计,学生不仅提升了Java编程技能,还学会了如何分析和设计一个实用的文本编辑器。在实践中,学生掌握了GUI设计、事件处理、文件操作等关键技术,增强了软件工程的实践经验,提高了分析和解决问题...

    JAVA实用教程课后习题解答(1-6)

    本文档“JAVA实用教程课后习题解答(1-6)”即提供了从基础到进阶层面的习题解答,不仅帮助学习者巩固了Java编程的基础知识,还涵盖了多个应用层面的知识点。 ### 第一章:Java程序基本结构与输出语句 第一章的...

    Core Java 2 - Volume II - Advanced Features 5th

    - **性能优化**:提供关于如何优化Java应用程序性能的实用技巧。 #### 5. 特色与优势 - **实践导向**:通过大量的示例代码和实际案例,帮助读者将理论知识转化为实践经验。 - **深入浅出**:即便对于复杂的概念和...

    java开发必去的网站

    ### Java开发必去的网站知识点总结 #### 一、Java官方网站 (http://java.sun.com) - **重要性**:作为Java语言的发源地,Oracle公司(原Sun Microsystems)提供的官方资源是学习Java最权威的地方。 - **主要内容**...

    Java课程设计报告-酒店客房管理系统.pdf

    Java课程设计报告的主题是构建一个酒店...总的来说,这个Java课程设计报告展示了一个基于Java的酒店客房管理系统的完整开发流程,涵盖了从需求分析到系统实现和测试的各个环节,旨在提供一个实用、高效的酒店管理工具。

    java阿里开发手册-新

    《阿里巴巴Java开发手册》作为阿里巴巴集团技术团队的经验总结和智慧结晶,代表了在大规模实战检验中不断完善和发展的Java开发规范。本手册内容丰富,共分为七个维度:编程规约、异常日志、单元测试、安全规约、...

    史上最全Java2实用教程及相关资料

    总之,这个Java2实用教程提供了全面的学习资源,无论是初学者还是有一定经验的开发者,都可以从中受益。只要按照合理的学习路径,充分利用这些资料,就能有效地掌握Java编程,并逐步提升自己的编程能力。

Global site tag (gtag.js) - Google Analytics