呼呼,从假期归来!
虽然集训中学习了文件的各种操作:文件的创建、删除等,但是经过了那么长时间,还是忘记了许多。
文件主要就是要学会使用它的方法。所以 ,最近又重新做了一遍文件搜索器。通过这个搜索器来复习文件的内容。
搜索器的外部框架的构建可以参考原来String界面开发。
private void initGUI() { JFrame jf= new JFrame(); jf.setTitle("文件搜索器");//标题 jf.setSize(600,600);//大小 jf.setLocationRelativeTo(null);//显示位置 jf.setResizable(false);//不可改变大小 jf.setDefaultCloseOperation(3);//程序关闭 JPanel north = new JPanel();//创建一个北边面板 // north.setPreferredSize(new Dimension(50,0)); JLabel jl1 = new JLabel("目录:"); north.add(jl1); String[] str1 = new String[]{"C:\\","D:\\","E:\\","F:\\"};//创建一个字符数组 JComboBox jc1 = new JComboBox(str1);//实例化一个复选框 jc1.setEditable(true);//设置复选框可编辑 north.add(jc1);//将复选框添加到面板上 JLabel jl2 = new JLabel("文件名:"); north.add(jl2); JTextField jt = new JTextField(10);//实例化一个可编辑框 north.add(jt);//将可编辑框添加到面板上 JLabel jl3 = new JLabel("扩展名:"); north.add(jl3); String[] str2 = new String[]{".*",".txt",".png",".gif"};//创建一个字符数组 JComboBox jc2 = new JComboBox(str2);//实例化一个复选框 jc2.setEditable(true);//设置复选框可编辑 north.add(jc2);//将复选框添加到面板上 JButton jb = new JButton("确定"); north.add(jb); jf.add(north,BorderLayout.NORTH);//将面板加到窗体上 JTextArea jta = new JTextArea();//创建一个显示文本的多行区域 jta.setEditable(false); jta.append("请点击确定按钮开始查找..."); JScrollPane js = new JScrollPane(jta); jf.add(js,BorderLayout.CENTER); //创建一个事件处理类 FileListener fl = new FileListener(jc1,jc2,jt,jta); //给按钮添加监听器 jb.addActionListener(fl); jf.setVisible(true);//可见 }
然后,创建一个监听器用来命令按钮以达到搜索的目的。
public void actionPerformed(ActionEvent e) { pathname1 = jc1.getSelectedItem().toString();//获取目录选项 name = jt.getText();//获取文件名 pathname2 = jc2.getSelectedItem().toString();//获取文件名后缀 FileThread ft = new FileThread(jta, pathname1,name,pathname2);//开一个文件线程 ft.start(); }
最后就是这个搜索器最重要的代码了。
public class FileThread extends Thread { private JTextArea jta; private String pathname1; private String name = "", pathname2 = ""; public FileThread(JTextArea jta, String pathname1, String name, String pathname2) { super(); this.jta = jta; this.pathname1 = pathname1; this.name = name; this.pathname2 = pathname2; } public int FindFile(String path) { int count = 0; File file = new File(path);// 创建一个文件类 File[] filelist = file.listFiles();// 列表目录 //判断目录是否为空 if (filelist == null || filelist.length == 0) { return 0; } else { for (int i = 0; i < filelist.length; i++) { if (filelist[i].isFile()) { String filename = filelist[i].getAbsolutePath();//获取文件名 //判断文件名是否与你要找的文件一致 if (name.equals("") && pathname2.equals(".*")) { count++; jta.append("\n" + filename); }else if(name.equals("")&&!pathname2.equals(".*")){ if(filename.endsWith(pathname2)){ count++; jta.append("\n" + filename); } }else if(!name.equals("")&&pathname2.equals(".*")){ int temp1 = filename.lastIndexOf("\\"); int temp2 = filename.lastIndexOf("."); if(temp1<temp2){ String nametemp = filename.substring(temp1+1,temp2); if(nametemp.equals(name)){ count++; jta.append("\n" + filename); } } }else{ String nametemp = name + "." + pathname2; if(filename.endsWith(nametemp)){ count++; jta.append("\n" + filename); } } } else if (filelist[i].isDirectory()) { count += FindFile(filelist[i].getAbsolutePath()); } } } return count; } public void run() { int count = FindFile(pathname1);//运行寻找文件的方法 //统计文件总数 if (count != 0) { jta.append("\n"); jta.append("文件总数为:" + count); } } }
利用线程使得搜索出来的文件能够一边在文本上显示一边执行搜索操作。
相关推荐
用户对文件进行操作时,离不开对目录的使用和管理。对目录管理好了,就可以方便、高效安全地使用自己和共享的文件。 四、实验内容及实验步骤 1.登录进入系统,修改个人密码。 2.使用简单命令date,cal,who,echo,...
。。。
。。。
SWi04个人防护品使用管理规定.doc SWI05固体废弃物管理规定.doc SWI06救急药箱管理规定.doc SWI08宿舍管理管理.doc SWI09饭堂管理规定.doc SWI10员工代表选举规定.doc SWI11女职工劳动保护管理规定.doc SWI12用电...
软件说明:该工具是莫顿个人知识文件管理软件的一个辅助工具,在您的莫顿发生故障,或者您不想 再使用莫顿管理您的文件时,会发现莫顿为您组织的文件结构无法让您理解,因为文件夹全是代码构成。 这时候,莫顿救星...
可以对任意格式的文件进行加密,使用了独特的加密算法,有很强的加密强度和安全度。加密的文件不能脱离私人文件保密专家运行或者打开。 2、EXE文件加密功能。 本功能可以给可执行的EXE文件加上一层密码保护,使之在...
此系统比较简单,适合新手使用,可以加强对一些概念的理解,同时适合自己扩展,用到的技术主要有(mysql+java+jsp+HTML+jdbc),开发环境为(eclipse+tomcat8+mysql+jdk1.8)此系统的功能有:通讯录管理,日程管理,...
项目概述:基于Python的Django框架,本源码库构建了一个个人学习用的博客系统。...整个项目由134个文件组成,具体文件类型分布如下:Python源文件27个,...该项目旨在个人学习与实践中,深化对Django框架的理解和应用。
个人综合使用手册步骤和测试部分相关厂商型号芯片得出可以烧录的厂商有哪些。 离线编程器支持烧录厂商:stm32g030 、stm32f030、英飞凌xmc1302 。 离线编程器不可烧录厂商:灵动(mm32)。 烧录器上没有厂商:芯邦...
今天小编为大家介绍一款简单实用的远程监控软件——XT800连控个人版。XT800连控个人版适用于远程计算机的...如果您对目前的远程监控方面还是不太理解如何实现远程监控管理,不妨尝试这款软件吧。 XT800连控个人版截图
Excel、CSV中第一列好理解,文本文件在软件中也按CVS格式处理,即文本文件中第1个逗号之前视为第一列。 发送文件中数据如果选择“Modbus数据”,仅支持“WriteMultipleRegisters”命令发送。发送串口数据如果16进制...
该原型文件包含了多个页面和模块,涵盖了金融业务的各个方面,如用户注册、登录、个人中心、投资理财、贷款申请、信用卡管理等。每个页面都经过精心设计,充分考虑了用户体验和操作便捷性。同时,原型文件中还包含了...
JSP个人记账管理系统 是一套完善的WEB管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 应用技术:java|jsp+mysql 开发工具:Myeclipse或Eclipse、jdk、...
我将在个人博客上配合详细文字说明对二进制分析的思路进行介绍,如果你同时学习rest_framework,替换本项目下载到你的Python安装文件下的\ Lib \ site-packages \目录下,然后根据博客上的说明,配合pycharm设置断点...
本资源提供了一套基于Vue.js的Javascript前端框架设计与实现源码,包含32个文件,其中...这些文件详细展示了Vuejs的设计与实现过程,并附有个人解释说明与笔记,非常适合那些想要深入理解Vue.js框架工作原理的开发者。