这是本人以前学习java时做的一个文件搜索的东东,一方面对File进行一些了解,另一方面对递归一些了解。。。先上图
一,首先对文件进行一些介绍(可以跳过,直接看后面的代码)
File f=new File("路径");
常用方法
f.creatNewFile();//创造一个新的空文件
f.delete()//删除掉
f.getName();//得到名字
f.getAbsoultPath();//得到完全路径
f.isDirector();//判断是不是目录
f.idFile();//判断是不是文件
f.length();//返回长度
f.list();/返回一个字符串数组,返回此此目录下目录和文件
f.listFiles();//返回一个字符串数组,返回此此目录下的文件
f.listRoots();/列出可用的文件系统根
f.toSring();/返回此路径名的字符串
f.mkdir();/创建一级目录
f.mkdirs();//创建多级目录;
文件写入读写的两个基础大类
输入流 FileInputStream 包含的方法
FileInputStream fi=new FileInputStream(File file);//获取文件file上的输入流
in.available();//返回file中可读取的字节byte数
in.read();//读取文件,以byte为单位
in.close();//关闭输入
然后可以用各种流包装,
如:BufferedInputStream
可以 BufferedInputStream(in);
将其封装 这样可以加快读取数据
或者 DataInputStream。可以读取其他非byte数据类型
FileOutputStream和上面差不多
一,首先还是从界面说起
一个主界面JFrame 几个JRidobutton 下面一个是JScrollPane的显示结果的框
- public void UI(){
- //设置界面
- this.setTitle("FileSearch");
- this.setSize(400,400);
- this.setLocation(400,100);
- this.setLayout(new FlowLayout(FlowLayout.LEFT));
- this.setDefaultCloseOperation(3);
- //文件输入框
- jt=new JTextField(10);
- jt.setPreferredSize(new Dimension(126,30));
- this.add(jt);
- //搜索按钮
- jb=new JButton("search");
- jb.addActionListener(this);
- this.add(jb);
- //标签1
- JLabel j2=new JLabel("文件格式");
- this.add(j2);
- //第二个文本框
- jt1=new JTextField(5);
- jt1.setPreferredSize(new Dimension(22,30));
- jt1.setFont(new Font("黑体",Font.BOLD,14));
- this.add(jt1);
- //标签2
- JLabel j1=new JLabel("请选择搜索范围");
- this.add(j1);
- //添加按钮
- this.creatButton();
- //添加滑动框
- this.creatText();
- //设置窗口大小不能改变
- this.setResizable(false);
- //设置窗体可见
- this.setVisible(true);
creatButton();是创造按钮函数。
- //创建按钮的方法
- public void creatButton(){
- bu=new ButtonGroup();
- //有多少磁盘就创建多少按钮
- File[] f=File.listRoots();
- for(int i=0;i<f.length;i++){
- JRadioButton j=new JRadioButton();
- j.addActionListener(this);
- JLabel jl=new JLabel(f[i].getPath());
- j.setActionCommand(f[i].getPath());
- bu.add(j);
- this.add(jl);
- this.add(j);
- }
File[] f=File.listRoots();是获取你的电脑所有的磁盘
creatText()是
- public void creatText(){
- //创造JTextArea
- jte=new JTextArea(15,30);
- jte.setLineWrap(true);
- //创造JScrollPane
- JScrollPane jd=new JScrollPane(jte);
- jte.setLayout(new GridLayout(1,1));
- this.add(jd);
- }
创造下面那个显示搜索结果的东东
/**********************************************************************************************************************************/
下面就是,添加监听,与事件触发后的方法的介绍。
- }
- //监听事件的方法
- public void actionPerformed(ActionEvent e) {
- //列出磁盘
- f1=File.listRoots();
- //如果按下search按钮调用的方法
- if(e.getActionCommand().equals("search")){
- //全盘搜索
- //判断是否输入内容
- if(jt.getText().equals("")){
- JOptionPane.showMessageDialog(this,"请输入搜索内容");
- }//判断是否选择搜索范围
- else if(bu.getSelection()==null){
- JOptionPane.showMessageDialog(this,"请选择搜索范围");
- }
- else if(bu.getSelection().getActionCommand().equals("ALL")){
- System.out.println("全盘搜索");
- for(int j=0;j<f1.length;j++){
- String st=f1[j].getPath();
- System.out.print(st);
- SearchThread ss=new SearchThread(this,st);
- ss.start();
- }
- }//搜索指定的盘
- else {
- SearchThread ss=new SearchThread(this,bu.getSelection().getActionCommand());
- ss.start();
- }}
- }
其中的搜索用线程处理,但是又得防止线程过多,会崩溃
- public class SearchThread extends Thread{
- public Jm j;
- public String s;
- public SearchThread(Jm j,String s){
- this.j=j;
- this.s=s;
- }
- public void run(){
- //System.out.println("-------->>>"+s);
- j.searchFile(s);
- //System.out.println("已经搜索完"+s);
- }
- }
searchFile()
- public void searchFile(String path){
- File f=new File(path);
- File[] fi=f.listFiles();
- if(fi!=null){
- for(int i=0;i<fi.length;i++){
- //如果是文件
- if(fi[i].isFile()){
- String s=fi[i].getName();
- if(s.contains(jt.getText())){
- //获取文件格式名前的文件名
- int ii=s.lastIndexOf(".");
- String str=s.substring(ii+1);
- //如果没有输出文件格式或者搜索到的文件格式符合输入的格式
- if(jt1.getText().equals("")||jt1.getText().equals(str)){
- jte.append(fi[i].getAbsolutePath()+"\r\n");
- }
- }//如果是目录,就递归
- }else if(fi[i].isDirectory()){
- String s=fi[i].getName();
- if(s.contains(jt.getText())){
- jte.append(fi[i].getAbsolutePath()+"\r\n");
- }
- //开启线程去处理每个文件
- if(fi.length>25){
- SearchThread se=new SearchThread(this,fi[i].getAbsolutePath());
- se.start();}
- else{
- searchFile(fi[i].getAbsolutePath());
- }
- }
- }
- }
- }
- 上面是递归
。。。主要思想很简单,就是遍历一个文件夹,如果其中有文件夹,在执行同样的方法,如果是文件,就比较你的文件名是否跟包含搜索的输入的字符,是的话就打印出来。
有任何疑问可以问我或者留言 50586022,源代码已经上传。。
相关推荐
在Java编程语言中,开发一个文件搜索器是一项基础但实用的任务。这个文件搜索器能够帮助用户在指定的目录下查找符合特定条件的文件,比如文件名、类型或修改日期等。下面将详细介绍如何构建这样的工具。 首先,我们...
综上所述,"java编写的文件搜索器"项目涵盖了Java基础、文件操作、多线程、异常处理、设计模式等多个重要知识点。通过实践这个项目,开发者不仅可以巩固Java编程技能,还能提升对文件系统操作的理解和应对实际问题的...
Java文件搜索工具V1.1便是在这种需求下应运而生,它提供了一个强大的解决方案,使得用户可以便捷地在个人电脑或网络环境中定位文件。 该工具最核心的功能之一是其关键词搜索能力,用户可以通过输入简单的文本字符串...
在编程领域,创建一个带有工具栏的Java记事本是一个常见的练习项目,它不仅可以帮助初学者熟悉GUI(图形用户界面)编程,还可以深入理解事件处理和文件操作等核心概念。这个"Java记事本(带工具栏等)"项目就是一个...
Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...
【Java文件搜索器】是一个基于Java编程语言实现的实用工具,它允许用户在计算机的各个磁盘或指定的文件夹中快速查找特定的文件。这个应用程序利用了Java强大的I/O和文件操作功能,为用户提供了一个方便的方式来定位...
- `grep` 是一个强大的文本搜索工具,它能够使用正则表达式搜索文本,并把匹配的行打印出来。 - 管道(`|`)允许将一个命令的输出作为另一个命令的输入。 #### 系统信息 - `man` 命令提供命令的手册页,例如 `man ...
"Java基础知识梳理" Java 是一种广泛使用的编程语言,适合初学者对 Java 相关知识的总结。下面是 Java 基础知识的梳理: 一、Java 开发环境 * JDK(Java Development Kit):可以开发编译与运行 JAVA 程序的工具...
Java基础知识总结涵盖了Java程序设计语言的核心概念和常用知识点。...综上所述,Java基础知识不仅包括了语言的语法和基本结构,还涵盖了运行环境、开发工具以及重要的编程思想和设计模式,是学习和掌握Java编程的基石。
【标题】"Java做的记事本带标准工具栏"揭示了这个项目是一个使用Java编程语言实现的简单文本编辑器,具备常见的记事本功能,并且配备了标准的工具栏。在Java中,我们可以利用Swing或JavaFX库来构建这样的图形用户...
标题中的“Java做的电脑快速文件查找”指的是使用Java编程语言实现的一种高效文件搜索工具,它能够在计算机中迅速定位到所需的文件。与操作系统自带的文件搜索功能相比,这种Java实现的工具在首次运行时可能需要...
在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据操作、文件处理、数学计算等。它们通常不包含实例变量,只提供静态方法服务,帮助开发者提高代码的复用性和...
在本段内容中,我们可以看到几个关于Java基础培训的主要知识点,这些知识点涵盖了从Java开发环境搭建到Java编程基础知识,再到图形用户界面(GUI)编程,最后到Java各种功能包的讲解。接下来,我会逐个知识点详细展开...
"Java从入门到精通之工具篇"是一个专门为初次接触Java的学习者设计的教程,旨在通过一问一答的方式,帮助初学者快速掌握Java的基础知识和常用工具。 首先,让我们探讨Java语言基础。Java是一种面向对象的语言,它的...
【Java基础开发文档】是全面涵盖多个IT领域基础知识的资源集合,主要针对初学者和有一定经验的开发者。这个文档集合提供了从前端开发到后端数据库管理,再到服务器操作系统和搜索引擎技术的广泛知识。 1. **Java**:...
1. **`java.lang.String`**:这是最基础的工具类,用于处理字符串。提供了如`substring()`、`indexOf()`、`equals()`、`trim()`等大量方法。 2. **`java.util.Arrays`**:提供了一系列静态方法来操作数组,包括排序...
Java编写的文件管理系统是一种利用Java编程语言实现的用于组织、管理和操作计算机文件的软件工具。在这样的系统中,用户可以通过指定文件路径来访问、检索、创建、修改或删除磁盘上的文件。这样的系统通常包括一系列...
Java基础知识大总结涵盖了Java编程语言的核心概念和结构,为初学者提供了一个全面的参考资料。下面将详细解析这些知识点: 1. JVM、JRE和JDK的区别: - JVM(Java Virtual Machine)是Java虚拟机,它是Java程序跨...
### Java基础知识问答详解 #### 一、JRE与JDK的区别及应用场景 1. **JRE(Java Runtime Environment)**:是Java运行环境的基础部分,包括了Java虚拟机(JVM)以及Java类库标准版。它使得Java应用程序可以在任何...
Java编程语言以其跨平台、面向对象...总之,这个“JAVA写的下载小工具”是一个很好的学习资源,它涵盖了Java GUI编程、文件下载管理和打包部署等多个实用技能,对于初学者和有经验的开发者来说都是一份宝贵的学习材料。