File 文件搜索,啤酒问题,删除非空文件夹

本文档展示了Java代码实例,包括在D盘搜索特定文件的方法,递归遍历文件夹结构,以及解决啤酒换瓶问题的算法。通过这些例子,读者能理解目录操作和基本的程序逻辑应用。
摘要由CSDN通过智能技术生成

案例:文件搜索


需求:

从D:盘中,搜索"QQ.exe”这个文件,找到后直接输出其位置。


分析: 


1先找出D:盘下的所有一级文件对象
2遍历全部一级文件对象,判断是否是文件
3如果是文件,判断是否是自己想要的
如果是文件夹,需要继续进入到该文件夹,重复上述过程

import java.io.File;
import java.io.IOException;

public class FileSearch {
    public static void main(String[] args) throws IOException {
        search(new File("D:\\"),"geek.exe");
    }

    /**
     * 去目录下搜索某个文件
     * @param dir  目录
     * @param filename  要搜索的名称
     */
    public static void search(File dir,String filename) throws IOException {
            //把非法的情况都拦截住
        if(dir==null|| !dir.exists()||dir.isFile()){
            return;//代表无法搜索
        }
        //2、dir不是null,存在,一定是目录对象
        //获取当前文件目录下全部的以及文件对象
        File[]files=dir.listFiles();
        //3、判断当前目录下是否存在一级文件对象,以及它是否可以拿到一级文件对象
        if (files!=null&& files.length>0){
            //4、遍历全部的一级文件对象
            for (File f : files) {
                //5、判断文件是否是文件,还是文件夹
                if (f.isFile()){
                    //是文件,判断这个文件名是否是我们要找的
                    if (f.getName().contains(filename)){
                        System.out.println("找到了,"+f.getAbsolutePath());
                        Runtime runtime=Runtime.getRuntime();
                        runtime.exec(f.getAbsolutePath());
                    }
                }else{
                    //是文件夹,需要继续重复这个过程(递归)
                    search(f,filename);
                }

            }
        }
    }
}

删除非空字符串

import java.io.File;
//删除非空字符串
public class FileDelete {
    public static void main(String[] args) {
            delete(new File("E:/磊哥面授/java基础/视频"));
    }
    public static void delete(File dir){
        if (dir==null||!dir.exists()){
           return;
        }
        if (dir.isFile()){
            dir.delete();
            return;
        }
        //dir存在且是文件夹,拿里面的一级文件对象
        File[]files=dir.listFiles();
        if (files==null){
            return;
        }
        //这是一个有内容的文件,干掉里面的内容,再干掉自己
        for (File file : files) {
            if (file.isFile()){
                file.delete();
            }else{
                delete(file);
            }

        }
        dir.delete();
    }
}

啤酒问题:啤酒2块钱一瓶,4个盖子可以换一瓶,两个空瓶可以再换一瓶,请问10块钱可以喝多少瓶

public class FilePiJiu {
    public static int totlenumber;
    public static int lastcovers;
    public static int lastbottles;
    public static void main(String[] args) {
        //啤酒问题:啤酒2块钱一瓶,4个盖子可以换一瓶,两个空瓶可以再换一瓶,请问10块钱可以喝多少瓶
            buy(10);
        System.out.println("总数"+totlenumber);
        System.out.println("剩余盖子数"+lastcovers);
        System.out.println("剩余瓶数"+lastbottles);
    }
    public static void buy(int money){
        //1、先买了再说
        int buynumber=money/2;
        totlenumber+=buynumber;
        //把盖子和瓶子继续换成钱继续买
        //计算本轮总的盖子数和瓶子树
        int allcovers=lastcovers+buynumber;
        int allbottles=lastbottles+buynumber;
        int allmoney=0;
        if (allbottles>=2){
            allmoney+=(allbottles/2)*2;
        }
        lastbottles=allbottles%2;
        if (allcovers>=4){
            allmoney+=(allcovers/4)*2;
        }
        lastcovers=allcovers%4;
       if (allmoney>=2){
           buy(allmoney);
       }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值