`
fortianwei
  • 浏览: 60943 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

从零开始--先写两个辅助类

阅读更多

跟随一本书的进度,慢慢的来了解怎样用lucene构建搜索引擎。
           用Lucene经常要一些辅助类来简化开发,比如获得指定路径的文件的内容,获得指定目录下的所有文件(嵌套的),先就写这两个类来热热身吧。
第一个 FileText.java

package tool;
import java.io.*;
public class FileText {
    public static String getText(File f){
        StringBuffer sb=new StringBuffer("");
        try{
            FileReader fr=new FileReader(f);
            BufferedReader br=new BufferedReader(fr);
            String s=br.readLine();
            while(s!=null)
            {
                sb.append(s);
                s=br.readLine();
            }
            br.close();
        }
        catch(IOException e){
            sb.append("");
            e.printStackTrace();
        }
        return sb.toString();
    }
    public static String getText(String s){
        String t="";
        try{
            File f=new File(s);
            t=getText(f);
        }
        catch(Exception e){
            t="";
        }
        return t;
    }
    //////////////// main函数
    public static void main(String a[]){
        String s=FileText.getText("./src/tool/aa.txt");//这里还出现过问题,查找文件默认是“工程”主目录,而不是该java文件所在的地方。。。
        System.out.println(s);
    }
}
 


其实就是重写函数getText,先将路径转化为文件,再来输出文件内容。

第二个,FileList.java

package tool;
import java.io.*;
public class FileList {
    private static final String SEP="##";//将StringBuffer中每个文件路径用之隔开,好用split函数拆分。
    private static StringBuffer sb=new StringBuffer("");
    public static String[] getFiles(File f)throws IOException
    {
        if(f.isDirectory()){
            File[] fs=f.listFiles();
            for(int i=0;i<fs.length;i++){
                getFiles(fs[i]);
            }
        }
        else
        {
            sb.append(f.getPath()+SEP);
           
        }
        String s=sb.toString();
        String[] list=s.split(SEP);
        return list;
    }
     
   
    public static String[] getFiles(String t)throws IOException
    {
        File f=new File(t);
        if(f.isDirectory()){
            File[] fs=f.listFiles();
            for(int i=0;i<fs.length;i++){
                getFiles(fs[i]);
            }
        }
        else
        {
            sb.append(f.getPath()+SEP);
        }
        String s=sb.toString();
        String[] list=s.split(SEP);
        return list;
    }
   
    public static void main(String[] ds)throws IOException
    {
        String s[]=FileList.getFiles("D:/Mule/examples");
        for(int i=0;i<s.length;i++){
            System.out.println(s[i]);
        }
    }
}
 


上 面两个例子都很基础很简单,但是有一点就是为何要用StringBuffer?有些新手可能更喜欢用String类型相加。原因是SringBuffer 的Buffer这个词,表示缓存中的东西,不用每次写入内存,而String是不变型类型,一旦用到就要在内存中再挖一片区域给他,这样如果多次用到的话 会导致程序执行慢下来,而用StringBuffer就没这个不好了。

分享到:
评论

相关推荐

    CodeIgniter-和-Doctrine-从零开始

    在"CodeIgniter-和-Doctrine-从零开始"的学习过程中,我们可以深入理解这两个框架的核心概念和实践应用。 首先,CodeIgniter的基础部分涵盖了框架的基本结构和配置。你将学习如何安装和设置CodeIgniter环境,理解其...

    100个C#辅助类

    这些辅助类通常包含了通用功能,例如数据验证、日期时间处理、字符串操作、集合操作等,使得开发者无需从零开始编写这些常见功能。 1. **数据验证**:在软件开发中,数据验证是非常关键的一步,确保输入的数据符合...

    从零开始学MT4编程

    ### 从零开始学MT4编程 #### 一、MT4平台简介与使用入门 MT4,即MetaTrader 4,是全球范围内广泛使用的外汇交易平台之一。它不仅为用户提供了一个强大的交易工具,还支持自动化的交易策略执行,即所谓的“智能交易...

    从零开始学cad

    ### 从零开始学CAD:基础知识与核心技能 #### 一、CAD简介 CAD,即Computer Aided Design(计算机辅助设计),是一种利用计算机系统来进行设计工作的技术。它被广泛应用于建筑、机械制造、电子工程等多个领域。CAD...

    从零基础开始的内存辅助教程

    在《从零学辅助教程.txt》这个文件中,你将找到这些概念的详细解释和实例,包括逐步指导和可能的代码示例,帮助你从零开始掌握内存管理的基本技巧。记得在学习过程中,理论结合实践,多做练习,这样才能真正掌握这些...

    浅评ChatGPT在软件开发上的辅助能力(附GPT-4对比)

    01 背景  ChatGPT于去年正式公测后,凭借其强大的自然语言处理能力迅速获得业内广泛关注,特别是辅助软件开发上,初步表现出了令人满意的能力,然而正当业内积极探索... 第一部分,我们模拟一个从零开始的开发场景

    从零开始学iOS7开发系列3-我的地盘我做主-Cha16 1

    描述用的文本框和类型这两个单元格:这部分让用户能够输入或选择内容。通常,我们会在单元格内嵌入文本框(UITextField),以允许用户输入描述,而类型可能通过标签(UILabel)展示,供用户选择或查看。\n\n2. 照片...

    性能测试从零开始LoadRunner入门与提升

    本篇将从零开始,深入探讨LoadRunner的入门与提升。 首先,理解性能测试的基本概念是必不可少的。性能测试旨在模拟真实用户对系统的操作,以检查系统在不同负载下的响应时间、吞吐量和资源利用率等关键指标。...

    如何从零开始自学成为电子工程师

    本文将详细阐述如何从零开始自学成为电子工程师,包括电子工程师的职业定义、自学的必要知识内容、以及大致需要的学习时间。 首先,电子工程师是指那些从事电子设备和信息系统研究、教学、产品设计、科技开发、生产...

    清明_跨程序辅助类库 v8.1+23例程.rar

    这些实例代码通常会涵盖基础用法到高级用法,帮助开发者从零开始掌握类库的全部功能。 在实际开发中,跨程序辅助类库的应用场景非常广泛,比如广告推送、社交分享、登录验证等。通过使用这样的类库,开发者可以避免...

    插件电阻色环识别-分类-标准值列表.doc

    - 一般情况下,色环电阻的排列顺序是从左到右或从靠近电阻一端的位置开始。 2. **技巧**: - **技巧1:寻找误差色环**。最常用的表示电阻误差的颜色包括金、银和棕色。其中,金环和银环很少被用作色环的第一环,...

    编程求两个非常大的数的和与积

    - 在`BigFigure`类中,我们使用`std::string`类型的`num1`和`num2`成员变量来分别存储两个大数,`outcome`存储结果,`precision`表示精度,`operation`表示执行的操作。 2. **加法运算**: - 加法的核心是逐位...

    个人笔记--JAVA基础

    - 创建内部类的实例时,需要先创建外部类的实例。 **3.9. 面向对象设计** - **3.9.1. 面向对象设计的七大原则** - 单一职责原则:一个类只负责一项职责。 - 开闭原则:对扩展开放,对修改关闭。 - 里氏替换...

    觅职渣记-互联网技术类笔试面试总结

    死锁是指两个或多个进程在执行过程中,由于竞争资源而造成的一种僵局状态。预防死锁的方法通常包括避免循环等待、采用资源有序分配法等。 **7. 进程与线程** 进程是程序运行的基本单位,拥有独立的内存空间;线程...

    苏教版下二年级数学知识点梳理-.pdf

    - 时针在两个数字之间,取较小的数字,若在12和1之间,算12时。 3. 记录时间方式: - 文字法,如5时50分。 - 电子表法,如8时零5分写作8:05。 4. 计算时间差: - 结束时间减去开始时间,分钟不够减时借位处理...

    JAVA--简单的计算器

    每个Java应用程序都从`main`方法开始执行。`public static void main(String[] args)`是程序的入口点,这里会包含接收用户输入、处理计算逻辑以及输出结果的代码。 3. **输入输出(Input/Output)**: 在计算器...

    modbus采集jar包

    通过这个库,开发者可以更方便地构建和维护Modbus通信代码,无需从零开始编写所有底层细节。 2. **Serotonin-timer-2.0.6.jar**:这个模块专注于定时任务和调度,对于需要定期或间隔性执行Modbus读取或写入操作的...

    Zend学习笔记 - (三) 第一个Zend程序

    在这一阶段的学习中,读者可以期待了解到如何从零开始搭建一个基本的 Zend 项目,包括设置环境、创建控制器、视图以及模型等基础知识。 **描述解析:** 描述中提到的 "博文链接:...

Global site tag (gtag.js) - Google Analytics