最近,学习了java的文件的一些基本操作,利用文件的基本知识做了一个小项目——文件搜索器
这个文件搜索器我默认是在D盘下面搜索,它一旦开始搜索,就不能停下来,这个会在学完线程之后进行完善,并加上时间条。
文件,即File,位于java.io包下。文件到底指的是什么,在这里先声明一下:
1.文件的全名是包含文件的路径和扩展名的,但我们单独讲一个文件名是,是不包含路径但包含扩展名的;
2.在同一目录(就是同一文件夹)下,不会存在同名的目录和文件,如果强行为一个文件改成目录下已有的名字,系统会报错,终止重命名;
3.文件的路径包含相对目录和绝对目录:
相对目录:不以路径分隔符开头的文件路径,需要使用取自其他路径名的信息来解析,默认情况下,java.io包中的类
总是根据当前用户的目录来解析相对路径名
绝对目录:指以根目录开头的路径,是完整的路径名,不需要其他信息就可以定义文件的位置
当前目录:指相对于程序运行时的目录算起的相对路径
关于文件的扩展名,我曾经办过一件很搞笑的事情,当时虽然知道不同的文件会有不同的扩展名,但是仅此而已,我的手机只支持mp3格式的,但是有一个音乐文件只有wma的,我就把后面的扩展名给改了,放到手机里,自己觉得还挺得意的,结果还是不能识别,才知道文件格式绝对不仅仅是扩展名不同这么简单,这次学习,让我对文件有个更深刻的理解.
我们使用File时经常用到的有以下一些方法
1.boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
2.String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
3.String getName() 返回由此抽象路径名表示的文件或目录的名称。
4.boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
5.boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
6.long length() 返回由此抽象路径名表示的文件的长度。
7.static File[] listRoots() 列出可用的文件系统根。
以下是文件搜索器的具体实现:
package cn.netjava.xySearchFile;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
/**
* 文件搜索器
*
*/
public class FileShowUI extends javax.swing.JFrame{
//定义一个面板属性
private JPanel pl;
//定义一个画布对象
private java.awt.Graphics g;
//创建一个SearchFile类的对象
private SearchFile sf;
//创建一个保存路径的集合
private java.util.ArrayList<String> arrayList = new java.util.ArrayList<String>();
//定义文件名字
private String name;
//定义一个文本框组件
private JTextField jtf;
/**
*主函数
* @param args
*/
public static void main(String[] args) {
//创建主函数的对象
FileShowUI fui = new FileShowUI();
//调用显示界面的方法
fui.showUI();
}
/**
* 文件搜索器的显示界面
*/
public void showUI(){
//设定窗口的名字
this.setTitle("我的文件搜索器");
//设置显示窗口的大小
this.setSize(600,500);
//设定窗口居中显示
this.setLocationRelativeTo(null);
//将窗口固定大小
this.setResizable(false);
//不使用布局管理器
this.setLayout(null);
//创建面板对象
pl = new javax.swing.JPanel();
//设置面板大小和显示位置
pl.setBounds(0, 0, 600, 500);
//设置面板的颜色
pl.setBackground(java.awt.Color.LIGHT_GRAY);
//将面板添加到界面上
final JTextArea jta = new JTextArea(24, 48);
//在面板上加个长度为10的输入框
jtf=new JTextField(15);
//为面板添加按钮
javax.swing.JButton search = new javax.swing.JButton("查找");
javax.swing.JButton start = new javax.swing.JButton("开始搜索");
javax.swing.JButton finish = new javax.swing.JButton("结束搜索");
//将按钮添加到面板上
pl.add(search);
pl.add(jtf);
pl.add(start);
pl.add(finish);
pl.add(jta);
//将面板添加到画布上
this.add(pl);
//边框布局管理
this.add(pl, BorderLayout.NORTH);
this.add(jta, BorderLayout.CENTER);
//滚动面板
JScrollPane pane = new JScrollPane(jta);
//设置面板的大小
pane.setSize(new Dimension(550,400));
pl.add(pane);
sf = new SearchFile(arrayList);
//给按钮添加监听器“匿名内部类”
java.awt.event.ActionListener al= new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e) {
//获取用户输入要查找文件的名字
name = jtf.getText();
//默认为在D盘搜索
int s = sf.search("D:\\",name);
if(arrayList == null && arrayList.size()==0){
jta.append("您所查找的文件不存在!\n");
System.out.println("您所查找的文件不存在!");
}else{
for(int i=0; i < arrayList.size();i++){
jta.append("文件:" + arrayList.get(i) + "\n");
}
}
jta.append("您所查找的文件总数为:"+ s);
System.out.println("您所查找的文件总数为:"+ s);
}
};
start.addActionListener(al);
//设置以上设置可见
this.setVisible(true);
//得到窗体上的画布类
g = pl.getGraphics();
}
}
package cn.netjava.xySearchFile;
import java.io.File;
/**
* 文件搜索器
* @param args
*/
public class SearchFile {
//定义一个保存文件路径的队列
private java.util.ArrayList<String> arrayList = new java.util.ArrayList<String>();
//自定义构造函数
public SearchFile(java.util.ArrayList<String> arrayList){
this.arrayList = arrayList;
}
/**
* 文件搜索的方法
*/
public int search(String fileName, String name){
//把计数器初始化为0
int count = 0;
//如果没找到,
if(name == null){
return 0;
}
//创建一个文件类的对象
File file = new File(fileName);
//定义一个file数组,获取所有的文件目录
File[] fileList = file.listFiles();
//先判断数组是否为空
if(null == fileList && fileList.length == 0){
System.out.println("文件目录为空,请在其他文件中查找。");
return 0;
}else{
for(int i=0; i< fileList.length; i++){
//如果是文件
if(fileList[i].isFile()){
//获取文件的路径
String filePath = fileList[i].getAbsolutePath();
//如果文件与查找的文件名相同,就把路径添加到队列中
if (filePath.indexOf(name) >= 0) {
count++;
arrayList.add(filePath);
}
}
//如果是目录
if(fileList[i].isDirectory()){
//获取目录的路径
String path = fileList[i].getAbsolutePath();
count += search(path,name);
}
}
}
return count;
}
}
文件的界面见附件。
- 大小: 16 KB
- 大小: 56.5 KB
分享到:
相关推荐
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
在本项目中,“java写的简单的本地图片搜索”是一个初级编程实践,主要利用Java语言实现对本地硬盘中的图片进行快速检索。这个程序对于初学者来说是一个很好的起点,它涉及到多线程、文件I/O以及文件类型的识别等...
28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...
28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...
本篇将详细探讨一个名为“文本搜索器”的安卓应用,该应用被称为“filesearcher”,适合初级学习者交流使用。我们将从安卓开发的基础、文本搜索器的工作原理以及如何在安卓平台上构建这样的应用等方面进行深入探讨。...
E:\j2sdk1.4.2_01\bin` 这一行设置了系统的路径变量,使得可以在任何目录下运行 bin 目录下的工具文件,如 javac.exe (Java 编译器)、java.exe (Java 解释器)、javap.exe (Java 反汇编器) 和 javadoc.exe (Java 文档...
**Java开发魔塔小游戏**是一种基于Java编程语言的初级编程项目,旨在帮助初学者通过实践来学习和理解Java编程的基本概念和技术。这个小游戏是程序员个人的成果,它整合了源代码、音频资源以及游戏中的图像素材,为...
- 使用javac命令将.java文件编译成.class文件。 - 通过java命令启动JVM并运行.class文件。 **7. 学习Java注意的地方** - 掌握基础语法和概念。 - 理解面向对象编程的基本原则。 - 经常练习编码,提高解决问题的能力...
《ACCP6.0 JAVA迷你DVD管理器完美版》是一个专为初级JAVA程序员设计的项目,旨在帮助用户高效地管理和组织他们的DVD收藏。这个管理器不仅提供了基础的DVD信息存储功能,还通过精心设计的界面和用户体验实现了对DVD的...
根据提供的文件信息,我们可以整理出一系列关于SCJP(Sun Certified Programmer for the Java Platform)认证考试中的关键知识点。这些知识点覆盖了Java语言的基础概念、数据类型、面向对象编程原则、异常处理等多个...
初级版本可能使用简单的启发式搜索,如Minimax算法配合Alpha-Beta剪枝,高级版本则可能使用更复杂的深度学习模型,如神经网络来评估棋局状态和生成下一步走法。 6. **并发与多线程**:在处理人机对战时,为了保持...
第八章介绍输入/输出流,Java的`java.io`包提供了处理文件、网络和内存数据流的类和接口,如FileInputStream和OutputStream。 第九章,基于Swing的图形用户界面(GUI)设计,Swing是Java的GUI库,包含许多组件(如...
这个文件可能是项目的源代码目录,包含了Java类文件、配置文件、JSP页面等。具体结构和内容需要解压后查看,但可以推测它包含了业务逻辑、控制器、模型、视图等关键组件。 8. **毕业设计与学习资源**: 该项目...
在【压缩包子文件的文件名称列表】中,只有一个名为"猜拳游戏"的文件,这可能是包含所有源代码的Java文件或者是一个包含了多个源文件的目录。通常,一个简单的猜拳游戏可能包括以下几个部分: 1. 游戏主类(GameMain...
Java是一门面向对象的语言,因此游戏的每个组件,如游戏面板、拼图块、计时器等,都可以设计为独立的类。这些类通过继承、封装和多态等面向对象特性来实现交互和功能。例如,`GamePanel`类可能包含游戏界面的绘制...
初级java笔试题编程资源 一般的 项目理念 6515 GA 中使用 Lark 或 JS 解析器的 DP 问题的伪代码运行器/转译器到 python? 发明一个朗名。 调用 pd 补丁的脚本,通过 puppeteer 或其他文件共享服务生成艺术品并发布到...