`
君心可晴
  • 浏览: 17001 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

简单文件搜索器的实现

阅读更多

说实话,哥不喜欢做总结。原因之一:发现网上前辈的总结已经很完善,或是比我写的还要充实。深感自己资历尚浅,惭愧之余,觉得实在没必要再为如此杂乱的网络环境添乱了。但总结还是得写,毕竟好记忆不如烂笔头,写精简一些、思路到位就是了,别人写得好的,就带个链接,也算积点阴德吧,嘿嘿。
本人觉得知识点是死的,唯有将它们组织起来,实现他们之间的交互,学起来才会有生气。如此,写总结就不会没话可说了,尽管做得确实不咋的。

本小项目实现了根据输入的关键字对选定目录下所有文件进行检索并列出文件名中包含关键字的文件的功能,以及检测选定文件内容中是否包含某关键字的功能。

主界面如图所示:



○1此界面的上三行两列明显用的是GridLayout(网格)布局管理器,该管理器在java.awt包下,声明此类布局管理器的对象的格式如下:
int  a; int  b; 
GridLayout  gridLayout =  new  GridLayout(a,b);
a为行数;b为列数;添加组件时根据添加的顺序从左到右(此为默认,可修改,但未试过)排完一行再到下一行。上面六个组件装在一个Jpanel里,下面的列表也装在(非直接)另一个Jpanel中,再用一个BorderLayout管理器装在到主界面上。该管理器的简单用法如下:
JFrame  frame  =  new  JFrame(“***”);
frame.setLayoutManager(new  BorderLayout());
Button  b1  =  new  Button(“1”);
Button  b2  =  new  Button(“2”);
Button  b3  =  new  Button(“3”);
Button  b4  =  new  Button(“4”);
Button  b5  =  new  Button(“5”);
//添加格式
Frame.add(b1,BorderLayout.NORTH);//添加到上方
Frame.add(b2,BorderLayout.LEFT);//添加到左边
Frame.add(b3,BorderLayout.CENTER);// 添加到中间
Frame.add(b4,BorderLayout.RIGHT);// 添加到右边
Frame.add(b5,BorderLayout.SOUTH);// 添加到下方
FlowLayout、GridLayout以及BorderLayout是三个最常用的布局管理器,其中GridLayout和BorderLayout会使控件将从面板分配到的空间填充。此三个布局管理器非常易用,但面对要求用大小不一的控件编排出复杂的界面时,其局限性就显示出来了。此时就需要用到GridBagLayout(网袋)布局管理器了,其用法非常灵活,也很难,曾在做连连看的界面中用到,但对其用法还是很陌生。这里就先不介绍了。

○2关于高级组件,有很多知识点都还没接触过,只是通过看别人的代码来窥探其奥秘,使用的时候也只能是按照别人代码所给的提示来用。本小项目实现了Jlist的简单使用以及为Jlist添加了滚动条,简单代码如下:
DefaultListModel fileListModel = new DefaultListModel();/*高级组件一般都配有Model(实例(本人觉得如此翻译较为合适)),此为高级组件的灵魂所在大凡涉及到数据的操作必须劳烦Model*/
JList fileList = new JList(fileListModel);//如此声明Jlist对象
JScrollPane sp = new JScrollPane(fileList);/*只有将Jlist对象装进JscrollPane中才能实现滚动条本小项目中Jlist实例对象对数据操作用到的方法*/((DefaultListModel)  fileList.getModel() ).addElement(Object obj);/*添加数据的方法必须先通过Jlist实例对象获取Model,再通过Model来操作数据*/((DefaultListModel)  fileList.getModel() ).getElementAt(int index);//获取数据的方法
((DefaultListModel)  fileList.getModel() ).clean();//删除所有数据

○3在选择查找范围时用到了JFileChooser文件选择器,JfileChooser的默认模式是只能选择文件,在这里用到了方法void  setFileSelectionMode(int mode)来修改模式,简单实用方法如下:
JfileChooser  chooser  =  new  JfileChooser(Sring path);//该构造函数通过path来设置默认路径
chooser.setFileSelectionMode(JfileChooser.DIRECTORIES_ONLY);/* 常量DIRECTORIES_ONLY指定选择器只能选择目录,FILES_ONLY指定选择器只能选择文件,FILES_AND_DIRECTORIES为两者皆可*/
int  returnVal =  chooser.showOpenDialog(null);//获取对话框的返还值
if(returnVal == JfileChooser.APPROVE_OPTION){/*当返回值等于常APPROVE_OPTION时,为按下了确认键后触发的返回值*/

……//方法体

}

还推荐个链接:http://blog.csdn.net/andycpp/article/details/1737658

○4在限制输入的格式时使用到了简单的正则表达式,由于是刚接触,所以点到为止,详情请查看API文档中的java.util.regex.Matcher;java.util.regex.Pattern。正则表达式在字符串的匹配、查找、修改的操作中使用极为方便。本例用到的语句为:
String  key;
……
Boolean  check =   key.matches(“\\s+”) ;//意思是当key中存在空白字符时,其值为真。
○5本小项目中还为Jlist实例对象实现了鼠标监听,当双击列表中的元素时会弹出一个对话框,可输入关键字,并检测选定文件内容中是否包含该关键字,也可检测列表中所有文件内容中是否包含该关键字,并将包含该关键字文件重新列在列表上。


○6在实现查找文件名中包含指定关键字的文件时,使用到了java.io.File。当实例化一个File对象时,该对象知识存在于内存中,只有当File的实例化对象调用createNewFile()、delete()等方法时才能在磁盘上对文件或目录进行新建、删除等操作。File中常用的方法还有:listRoots():静态方法,返还一个磁盘根目录数组;
exists():判断文件或目录是否存在;
isDirectory(): 判断File实例对象是否为目录;
isFile():判断File实例对象是否为文件;
getAbsolutePath():获取File实例对象的绝对路径;
getName():获取File实例对象的名字;
length():获取文件内容的字节长度;


○7在实现检测文件内容是否包含指定关键字时,需要读取文件的内容,因此需要用到输入流。事物间通过传递消息来实现交互,消息的传递就是数据的传输。从文件到控制台或从控制台到服务器等,存在着数据的传输。在Java语言程序设计中,数据传输的通道被定义成流,用java的OOP思想可以将流形象地比喻成管道或水管。借助取水、装水的形象画面,可以大概的感知流的运作方式。
按方向,可将流分为输入流和输出流。这里的输入输出是相对于程序(或说控制台)而言的,数据流向控制台则为输入流,数据从控制台流出则为输出流。
按读取数据的最小单位,可将流分为字节流和字符流,1字符=2字节。字节流为FileInputStream和FileOutputStream,字符流为FileReader和FileWriter。
按功能,可将流分为节点流和处理流。节点流为可以从一个特定的数据源(节点,如:文件、内存)读取数据,也就是字节流和字符流。处理流是“套接”在已存在的节点流或处理流之上,通过对数据的加工处理为程序(控制台)提供更为强大的读写功能的流,包括BufferedInputStream和BufferedOutputStream(缓冲流)、DataInputStream和DataOutputStream(数据流)、ObjectInputStream和ObjectOutputStream(对象流)等。
当使用字节流读写数据时,数据是一个字节一个字节的读写的。以读写一个文件为例:一次读写的过程包括以下几个步骤:源文件—>操作系统内存—>JVM内存—>程序变量操作系统内存目标文件。如此读写,效率非常低。而缓冲流就拟补了它的不足。缓冲流的机制是让缓冲流对象在JVM中开辟一定大小的缓存区,将包含的节点流中的数据填充该内部缓冲区,当缓冲区装满后,在一次性的将缓冲区的全部数据读写出去。如此真的会快吗?实践证明是快了很多,但是用语言表述起来还是成问题。那好再打个比方:假设现在叫你到100米外的水池取水,返回来并用取回的水将一个大水桶装满。有两种瓶子给你选择:一个容量为100毫升的瓶子、一个容量为2升的瓶子。要求你在最少的时间内完成任务,你会选哪种瓶子?(不限交通工具~.~)还有一点需要注意的是:频繁的对磁盘进行数据的读写对磁盘来说,是有害无益的,会加快磁盘老化。
像用水龙头接水一样,接完后要记得关闭水龙头。同理,当我们使用流完成数据的写出、读入时,要记得把流关闭。
  • 大小: 18 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    简单的文件搜索器

    【标题】:“简单的文件搜索器” 【描述】:在信息技术领域,文件搜索是日常工作中一个不可或缺的功能。一个简单的文件搜索器通常是指一个程序或工具,它允许用户在计算机上快速定位和查找特定的文件或文件夹。这个...

    易语言文件搜索器

    总结,易语言文件搜索器通过易语言的编程特性,结合高效的搜索算法和用户友好的界面设计,实现了快速查找文件的功能。通过理解易语言的基本语法和文件操作,我们可以进一步改进和扩展这个工具,以适应更复杂的文件...

    android 文件搜索器

    【Android 文件搜索器】是一款专为Android平台设计的应用程序,旨在帮助用户快速、高效地在设备上查找指定的文件。这个工具可能包含了源代码,因此对于开发者来说,它不仅是一个实用工具,也是一个学习和研究的对象...

    界面化文件搜索器

    文件搜索器的实现涉及到多个技术知识点: 1. 文件系统接口:程序需要与操作系统进行交互,读取文件系统的元数据,如文件名、路径、大小、修改时间等。这通常通过标准库函数,如在C++中的`<filesystem>`库,Python中...

    通过java实现一个简单的文件搜索器.rar

    压缩包文件代码是一个用Java实现的实用功能,它实现了一个简单的文件搜索器。这个搜索器将遍历指定目录及其子目录,并查找与给定文件名模式匹配的所有文件。这个功能在很多情况下都非常有用,比如批量处理文件、查找...

    易语言源码易语言文件搜索器.rar

    "易语言源码易语言文件搜索器.rar" 是一个包含易语言源代码的压缩包,用于实现文件搜索功能。在这个项目中,我们可以深入学习易语言的基本结构、语法规则以及如何构建一个实用的文件搜索工具。 1. **易语言基础** ...

    java简单搜索器源码(系统)

    Java简单搜索器源码系统是基于Java编程语言实现的一个简易搜索引擎。这个系统主要涉及了Java核心技术、数据结构和算法,以及文件I/O操作等多方面的知识。以下将详细阐述这些关键知识点。 首先,Java作为一门面向...

    文件搜索器

    总的来说,开发一个简单的文件搜索器需要掌握C语言的基础语法,熟悉VC6.0的开发环境,以及理解Windows API中的文件操作函数。这个过程不仅能够帮助开发者加深对文件系统和搜索算法的理解,还能够锻炼解决问题和调试...

    C#做的窗口文件搜索器

    【C#窗口文件搜索器】是一个利用C#编程语言实现的桌面应用程序,它专注于文件系统的检索功能。在本文中,我们将深入探讨C#中的输入/输出(IO)流和递归算法在文件搜索中的应用,以及如何构建一个简单的窗口搜索器。 ...

    简易文件管理器

    5. **搜索功能**:高效的文件搜索功能是现代文件管理器的重要组成部分。用户应学会使用关键词、日期、大小等条件进行高级搜索。 6. **文件权限与安全**:在多用户环境中,理解文件权限至关重要。用户需要知道如何...

    精彩编程与编程技巧-VB中自制文件搜索器...

    ### 知识点:在VB中开发自制文件搜索器 #### 1. 项目概述 在Visual Basic(简称VB)环境中构建一个文件搜索工具,旨在帮助用户高效地查找指定驱动器及其子目录下的文件。本项目的核心功能包括: - 驱动器选择 ...

    基于QT+Linux/Windows的简易文件管理器

    本项目是一个基于QT框架实现的简易文件管理器,它可以运行在Linux和Windows操作系统上,提供了基本的文件和文件夹操作功能,如创建、删除、复制和粘贴。 **QT框架详解** QT是一个流行的开源C++图形用户界面应用...

    Delphi文件搜索器..rar

    一个简单的文件搜索器可能包含输入框让用户输入搜索条件,列表框显示搜索结果,以及按钮触发搜索操作。你需要了解如何布局控件,响应用户事件,以及如何在界面上动态更新搜索结果。 4. **多线程**:为了提高用户...

    c# 来实现文件管理器,有新建文件夹 文件 读写文件 搜索文件 清理垃圾和删除文件等功能 C#学习项目,winform学习项目

    这个文件管理器涵盖了多种关键功能,包括新建文件夹、创建文件、读取和写入文件、搜索文件、清理垃圾以及删除文件。这对于任何希望提升C#编程技能或了解Windows桌面应用程序开发的开发者来说,都是一个极好的学习...

    文件搜索功能普通功能的实现

    在IT领域,文件搜索功能是操作系统、文件管理器或应用程序中的基本组件,它允许用户快速定位和访问存储在计算机上的特定文件。对于“文件搜索普通功能的实现”这个主题,我们将探讨这一基础功能的设计和工作原理,...

    Android简易文件选择器

    "Android简易文件选择器"是一个这样的工具,它具备多选、反选和全选功能,旨在优化用户体验并解决ListView中CheckBox选中状态混乱的问题。 **文件选择器的基本概念** 文件选择器是一个用户界面组件,允许用户浏览和...

    光速文件批量搜索器V4.2

    在技术层面,光速文件批量搜索器V4.2的实现可能涉及到文件系统接口的利用,如Windows API中的FindFirstFile和FindNextFile函数,这些函数允许程序高效地遍历文件系统。同时,为了加快搜索速度,软件可能采用了文件...

Global site tag (gtag.js) - Google Analytics