java IO实现电脑搜索、删除功能的实例

一.递归方法

1.递归就是自己调用本身的方法,前提是有方法。

2.递归使用

找出递归的规律
递归要有出口条件,也就是结束条件

3.注意事项

递归次数不能太多,否则会出现堆栈溢出现象
递归不能嵌套使用,否则出现死递归

二.IO介绍

1. i为Input输入,O为Output输出,API单独把输入和输出流封装成一个类,提供大量的方法供我们使用。

2. IO技术可以把数据写入到持久化设备(包括硬盘、光盘、U盘等),集合、数组虽然可以存储读取,但是仅仅暂存在内存中,当重新启动程序就不存在了。

3. 相对内存这个参照物而言,把硬盘的东西读到内存中,称为输入流。把内存的数据写入到硬盘上,称为输出流。

三.代码实现电脑搜索的功能

1.搜索自定义后缀名的文件夹

package cn.jasonFile01; 

import java.io.File; 

/**
 * @author Jason
 * @2016年9月18日 下午9:12:35
 */
public class FindFiles04 {
 // 成员变量的巧用
 // 统计变量可以放在成员位置
 static int countFile = 0; 

 public static void main(String[] args) {
 // 封装父类的file对象
 File parent = new File("F:\\API");
 // 定义要查找文件的后缀名
 String suffix = ".pdf";
 // 调用查找文件的方法
 scanFiles(parent, suffix);
 // 输出满足条件的文件个数
 System.out.println("满足条件的文件有" + countFile + "个");
 } 

 /**
 * 这是查找符合条件的文件
 * 1. 获取当前目录下的所有子文件及其子目录
 * 2. 遍历数组判断是否是文件
 *  是:在满足后缀名的情况下,直接输出文件所在的绝对路径,计数器加1
 *  否:接着递归
 * 注意:如果是文件(不是目录)调用listFiles方法的话,那么返回的是null
 */
 private static void scanFiles(File parent, String suffix) {
 // 获取当前目录下的所有子文件及其子目录
 File[] files = parent.listFiles();
 // 防止系统中没有访问权的文件返回null值
 if (files != null)
  for (File file : files) {
  if (file.isFile() && file.getName().endsWith(suffix)) {
   System.out.println(file.getAbsolutePath());
   countFile++;
  } else
   scanFiles(file, suffix);
  }
 }
} 

2.搜索自定义后缀名的文件夹

package cn.jasonFile01; 

import java.io.File; 

/** 

 * @author Jason
 * @2016年9月18日 下午9:12:20
 */ 

public class FindFolder {
 // 定义统计变量
 static int countFolder = 0; 

 public static void main(String[] args) {
 // 封装父类的file对象
 File parent = new File("F:\\a");
 // 定义要查找文件的后缀名
 String suffix = "1";
 // 调用查找文件夹方法
 scanFolder(parent, suffix);
 // 输出满足条件的目录个数
 System.out.println("满足条件的文件夹有" + countFolder + "个");
 } 

 /**
 * 这是查找满足条件的文件夹个数的方法
 * 1. 获取当前目录下的所有子文件及其子目录
 * 2. 遍历数组判断是否为目录
 *  是:接着递归
 *  否:不管它
 * 3. 后缀名相同输出绝对路径
 * 注意:如果是文件(不是目录)调用listFiles方法的话,那么返回的是null
 */
 private static void scanFolder(File parent, String suffix) {
 // 获取父目录下的所有子目录及子文件
 File[] files = parent.listFiles();
 if (files != null)
  // 遍历数组进行判断
  for (File file : files) {
  if (file.isDirectory())
   scanFolder(file, suffix);
  } 

 //免租条件的目录输出
 if (parent.getName().endsWith(suffix)) {
  System.out.println(parent.getAbsolutePath());
  countFolder++;
 } 

 }
} 

四.代码实现电脑的彻底删除功能

注意:Java中删除不走回收站,请慎重使用。

package cn.jasonFile01; 

import java.io.File; 

public class ClearAll {
 public static void main(String[] args) {
 // 封装父目录为file对象
 File parent = new File("F:\\IO修改文件名");
 //调用删除方法
 clearAll(parent); 

 } 

 /**
 * 这是删除父目录下的所有子目录和子文件的方法
 * 1.获取父目录下的所有子文件及子目录
 * 2.变量数组并进行判断是否是文件
 * 是:删除
 * 否:进行递归
 * 3.直到把目录下的子文件到删除完毕,那么在删除所在的空文件
 */
 private static void clearAll(File parent) {
 // 获取父目录下的所有子文件及子目录
 File[] files = parent.listFiles();
 //1.防止系统文件不能方位而出现空指针异常
 //2.防止系统路径不存在导致数组为null,发生空指针异常
 if (files != null)
  // 遍历数组
  for (File file : files) {
  if (file.isFile())
   file.delete();
  else
   clearAll(file);
  }
 // 删除文件后在删除空文件夹
 parent.delete();
 }
} 

以上就是小编为大家带来的java IO实现电脑搜索、删除功能的实例全部内容了,希望大家多多支持我们~

(0)

相关推荐

  • Java 使用IO流实现大文件的分割与合并实例详解

    Java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分开复制, 最后把三个文件合并, 这样就解决问题了 :再比如说, 你有一个上百M的文件要上传到FTP ,但是这个FTP限制你单个文件不能超过10M 这时候也可以用文件分割的办法解决问题.既然分割了,那么在我们再次使用的时候就需要合并了,今天我们就通过Java

  • JAVA对list集合进行排序Collections.sort()

    对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序.代码如下: 进行降序排列 进行降序排列 Collections.sort(list, new Comparator<ResultTypeDesc>() { public int compare(ResultTypeDesc o1, ResultTypeDesc o2) { return o2.getRatio().compareTo(o1.getRatio()); } }); 进行升序排列 Collections.sort

  • 如何解决Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X

    这两天因为项目需要整合spring.struts2.mybatis三大框架,但启动的时候总出现这个错误,困扰我好久,在网上找到的答案都不是我想要的,今天终于知道原因了. user-mapper.xml如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http:/

  • Java 编程之IO流资料详细整理

    java IO详解: Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流  字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码

  • Java 对象序列化 NIO NIO2详细介绍及解析

    Java 对象序列化 NIO NIO2详细介绍及解析 概要: 对象序列化 对象序列化机制允许把内存中的Java对象转换成与平台无关的二进制流,从而可以保存到磁盘或者进行网络传输,其它程序获得这个二进制流后可以将其恢复成原来的Java对象. 序列化机制可以使对象可以脱离程序的运行而对立存在 序列化的含义和意义 序列化 序列化机制可以使对象可以脱离程序的运行而对立存在 序列化(Serialize)指将一个java对象写入IO流中,与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢

  • Java IO学习之缓冲输入流(BufferedInputStream)

    Java IO  BufferedInputStream 概要: BufferedInputStream是缓冲输入流,继承于FilterInputStream,作用是为另一个输入流添加一些功能,本质上是通过一个内部缓冲数组实现的.例如,在新建某输入流对应的BufferedInputStream后,当通过read()读取数据时,BufferedInputStream会将输入流的数据分批的填入到缓冲区中,每当缓冲区的数据读完之后,输入流会再次填充数据缓冲区,直到读完数据. BufferedInput

  • 详解java IO流之缓冲流的使用

    java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来,然后一起写入或读取出来.所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能. 缓冲流分为字节和字符缓冲流 字节缓冲流为: BufferedInputStream-字节输入缓冲流 BufferedOutputStream-字节输出缓冲流 字符缓冲流为: BufferedReader-字符

  • java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

    java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法 玩web的SSH总会有些令你意想不到的exception,这里其中有很多事自己不小心,或者马虎所造成.因此,解决的方案会各有不同,别人出现的异常解决方案对你的可能无效,就像上面的我报的异常一样,百度了很多很多次,给我的答案无非就是在aop上加上一句,但是非常抱歉,我加上去无效!所以还是那句话,对于自己的异常,还是要自己解决. 首先说明一下,我这次的练习的ssh结构

  • JavaWeb Session失效时间设置方法

    session失效时间设置方法,具体方法如下所示: 一.java代码   <!--优先级是最高的--> request.getSession().setMaxInactiveInterval(1800);/*秒为单位,1800= 60*30 即30分种*/ 二.web.xml  <!--优先级是最低的--> <session-config> <!--分钟为单位--> <session-timeout>30</session-timeout&

  • java IO实现电脑搜索、删除功能的实例

    一.递归方法 1.递归就是自己调用本身的方法,前提是有方法. 2.递归使用 找出递归的规律 递归要有出口条件,也就是结束条件 3.注意事项 递归次数不能太多,否则会出现堆栈溢出现象 递归不能嵌套使用,否则出现死递归 二.IO介绍 1. i为Input输入,O为Output输出,API单独把输入和输出流封装成一个类,提供大量的方法供我们使用. 2. IO技术可以把数据写入到持久化设备(包括硬盘.光盘.U盘等),集合.数组虽然可以存储读取,但是仅仅暂存在内存中,当重新启动程序就不存在了. 3. 相对

  • Java FTP上传下载删除功能实例代码

    在没给大家上完整代码之前先给大家说下注意点: FTP上传下载,容易出现乱码,记得转换 package com.yinhai.team.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; impo

  • java实现选中删除功能的实例代码

    分析: 通过form表单传递数据,删除数据根据id编号删除. 前台 <a class="btn btn-primary" href="javascript:void(0);" rel="external nofollow" id="delSelected">删除选中</a> </div> <form id="form" action="${pageCont

  • 详解java 拼音首字母搜索内容功能的示例

    序 一款成熟的产品,首页的搜索功能除了正常的关键词匹配以外:还要考虑到用户忘记输入汉字或者用户想通过关键字首字母来进行搜索的操作. 这不,阿淼公司最近在做游戏盒子,其中包含很多游戏,有个需求就是要用户可以根据游戏名称首字母搜索游戏,如搜索 zwdzjs 可以搜索出来植物大战僵尸等:输入 hzw 可以搜索出来海贼王等. 功能如何实现?接下来阿淼就直接带大家实操. 1.导入依赖包 <dependency> <groupId>com.belerweb</groupId> &l

  • Java实现多选批量删除功能(vue+Element)

    本文实例为大家分享了Java实现多选批量删除功能的具体代码,供大家参考,具体内容如下 选择前效果图 选中效果图 前端vue代码 1.页面显示template 使用方法 @selection-change="changeFun" 获取表中选中的行所有显示的数据 <template> <div class="dept tab-container"> <div class="dept-table"> <div

  • Java实现多选批量删除功能(vue+Element)

    本文实例为大家分享了Java实现多选批量删除功能的具体代码,供大家参考,具体内容如下 选择前效果图 选中效果图 前端vue代码 1.页面显示template 使用方法 @selection-change="changeFun" 获取表中选中的行所有显示的数据 <template> <div class="dept tab-container"> <div class="dept-table"> <div

  • Java IO流 File类的常用API实例

    •File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOException; public class Demo16 { public static void main(String[] args) { File file = new File("F:\\javaio"); //文件(目录)是否存在 if(!file.exists()) { /

  • java实现多选批量删除功能

    本文为大家分享了java实现多选批量删除的具体代码,帮助大家更好的理解批量删除功能的实现过程,供大家参考,具体内容如下 本文用到的框架是:springmvc+mybatis 实现思路:多选复选框多个删除,点击全选全部选中,再次点击全部取消,为了保证操作的安全,应该提示框进行提升,用户再次点击确认删除进行删除,把选中的多个复选框的值传到后端进行循环删除,最后刷新数据,公司中为了保证数据安全一般不会真正删除而是把数据修改状态进行隐藏,也就是修改,这边以完全删除为例 部分效果截图(页面简陋) 点击全选

  • Java Web项目中实现文件下载功能的实例教程

    需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>通过链接下载文件&

  • Java IO流对象的序列化和反序列化实例详解

    Java-IO流 对象的序列化和反序列化 序列化的基本操作 1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化. 2.序列化流(ObjectOutputStream),writeObject 方法用于将对象写入输出流中: 反序列化流(ObjectInputStream),readObject 方法用于从输入流中读取对象. 3.序列化接口(Serializeable) 对象必须实现序列化接口,才能进行序列化,否则会出现异常.这个接口没有任何方法,只是一个标准. packag

随机推荐

其他