Test_Java_File类递归练习(拷贝文件)

Java核心面试题解析:静态方法、对象拷贝与异常处理 Java作为面向对象编程语言,其核心机制如静态方法与实例方法的区别、对象拷贝方式以及异常处理原则是开发者必须掌握的基础知识。静态方法在类加载时确定内存地址,适合工具类实现但需注意线程安全;对象拷贝分为引用、浅拷贝和深拷贝三种方式,深拷贝通过序列化实现完全独立副本。异常处理遵循具体异常、及早抛出等原则,避免性能损耗。这些技术点不仅是面试高频考点,更是编写健壮Java程序的关键,尤其在多线程环境和大型系统开发中尤为重要。 阅读详情

需求:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

Test文件夹中包含两个文件夹,分别为src(原文件夹)和dest(目标文件夹)
这里写图片描述

在src的文件夹中包含若干个文件
这里写图片描述

dest文件夹为空文件夹
这里写图片描述

拷贝文件代码如下:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Scanner;

public class Test3 {
    /*
     * 需求:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
     * 
     * 分析:
     * 从键盘接收两个文件夹路径(对该方法调用两次)
     * 1.创建键盘录入对象
     * 2.定义一个无限循环
     * 3.将键盘录入的结果存储并封装成File对象
     * 4.对File对象判断
     * 5.将文件夹路径对象返回
     * 
     * 把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
     * 1.在目标文件夹中创建原文件夹
     * 2.获取原文件中所有的文件和文件夹,存储在File数组中
     * 3.遍历数组
     * 4.如果是文件就用io流读写(io只能读取文件,不能读取文件夹)
     * 5.如果是文件夹就递归调用
     */
    public static void main(String[] args) throws Exception {
        File src = getDir();
        File dest = getDir();
        //如果目标文件和原文件的路径相同,这可能会进入无限循环创建状态,直到内存爆炸,蓝屏死机为止
        if(src.equals(dest)){
            System.out.println("目标文件夹是原文件夹的子文件夹");
        }else{
            copy(src,dest);
        }
    }

    /*
     * 把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
     * 1.返回值类型void
     * 2.参数列表File src, File dest
     */
    public static void copy(File src, File dest) throws Exception {
        //1.在目标文件夹中创建原文件夹
        File newDir = new File(dest,src.getName());
        newDir.mkdir();
        //2.获取原文件中所有的文件和文件夹,存储在File数组中
        File[] subFiles = src.listFiles();
        //3.遍历数组
        for (File subFile : subFiles) {
            //4.如果是文件就用io流读写(io只能读取文件,不能读取文件夹)
            if(subFile.isFile()){
                BufferedInputStream bis = 
                        new BufferedInputStream(new FileInputStream(subFile));
                BufferedOutputStream bos = 
                        new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));
            int b;
            while((b = bis.read()) != -1){
                bos.write(b);
            }

            bis.close();
            bos.close();
            }else{
                //5.如果是文件夹就递归调用
                copy(subFile,newDir);
            }
        }
    }

    /*
     * 从键盘接收一个文件夹路径:
     * 1.返回值类型File
     * 2.参数列表无
     */
    public static File getDir(){
        //1.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径:");
        //2.定义一个无限循环
        while(true){
            //3.将键盘录入的结果存储并封装成File对象
            String line = sc.nextLine();
            File dir = new File(line);
            //4.对File对象判断
            if(!dir.exists()){
                System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:");
            }else if(dir.isFile()){
                System.out.println("您录入的是文件夹路径,请输入一个文件路径:");
            }else{
                //5.将文件夹路径对象返回
                return dir;
            }
        }
    }
}

执行该程序
这里写图片描述

查看dest文件夹中多了一个src文件夹,在src中包含了其中的内容
这里写图片描述

注意:如果原文件夹和目标文件夹的路径相同,即在同一个文件夹下不停地复制相同的文件夹,系统会崩溃。因此,要在调用copy()方法之前,首先要进行判断。

//如果目标文件和原文件的路径相同,这可能会进入无限循环创建状态,直到内存爆炸,蓝屏死机为止
        if(src.equals(dest)){
            System.out.println("目标文件夹是原文件夹的子文件夹");
        }else{
            copy(src,dest);
        }
Java之File类的详细解析及小练习 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 阅读详情

相关推荐

Java中File类对文件的几个常见操作实例总结

JavJava中File类对文件的几个常见操作实例总结

Java_文件拷贝

在d盘下准备一张图片,拷贝到c盘 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void main(String[] args) { //完成文件拷贝,将d:\\kaola。jpg 拷贝d:\\ //思路分析 //1.创建文件的输入流,将文件读入到程序 //2.创建文

战士小小白的博客 441

c语言递归遍历文件夹中文件

采用c语言编程,递归遍历一个文件夹中的所有文件,包括子文件夹

删除一个多级文件夹

public class Test2 { public static void main(String[] args) { //练习二:删除一个多级文件夹 //delete方法 //只能删除文件和空文件夹. //如果现在要删除一个有内容的文件夹? //先删掉这个文件夹里面所有的内容. //最后再删除这个文件夹 File src = new File("C:\\Users\\apple\\

qq_37823919的博客 1117

UE4 GamePlay框架深度解析:从蓝图到C++构建多人游戏核心

在游戏开发与实时交互应用领域,一套清晰、可扩展的底层框架是项目成功的关键。GamePlay框架作为虚幻引擎(UE4/UE5)的核心架构,定义了游戏世界中对象交互、状态管理与网络同步的基本原理。它通过职责分离的设计模式,将游戏规则(GameMode)、全局状态(GameState)、玩家状态(PlayerState)、可操控实体(Pawn/Character)及其控制器(Controller)等核心类有机组织起来,确保了逻辑的清晰性与多人游戏数据的一致性。其技术价值在于为开发者提供了一套经过验证的最佳实践,大

weixin_33924770的博客 621

ROS2 Control实战:多机器人仿真与控制器管理

本文详细介绍了ROS2 Control在多机器人仿真中的应用,涵盖命名空间配置、控制器管理及性能优化。通过Gazebo仿真环境和ROS2 Control框架,开发者可以高效管理多个机器人的硬件抽象和控制器,实现资源隔离与平滑切换。文章还提供了常见问题排查和调试工具推荐,助力机器人开发实践。

u9v0w的博客 203

2021-07-30

java 有一个文本文件,里面是学生名单, 还有一个文件夹,里面是学生上交的作业, 编写程序,将所有的没有上交作 业的学生的名字打印出来 //有一个文本文件,里面是学生名单, 还有一个文件夹,里面是学生上交的作业, 编写程序,将所有的没有上交作 业的学生的名字打印出来 public class StampStudentList { public static void main(String[] args) throws IOException { Scanner scan=new Scann

瑾的博客 238

告别浏览器崩溃!EasyPlayer.js长时间播放FLV视频内存泄漏排查指南

本文针对EasyPlayer.js长时间播放FLV视频导致浏览器内存泄漏和崩溃的问题,提供了一套系统性排查与解决方案。核心策略包括将视频编码从H.265转为H.264以降低解码压力,以及将传输协议从HTTP-FLV切换至WebRTC以优化资源管理。文章还详细介绍了播放器实例生命周期管理、浏览器开发者工具监控等精细化排查手段,帮助开发者实现稳定、长时间的多路视频播放。

weixin_29229055的博客 175

Java进阶(三十四)IO流2:File类的练习

1.利用File构造器,new一个文件目录file 在其中创建多个文件和目录 编写方法,实现删除file中指定文件的操作 2.判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称 3.遍历指定目录所有文件名称,包括子文件目录中的文件。 并计算指定目录占用空间的大小 删除指定文件目录及其下的所有文件。 ...

qq_33491651的博客 683

oracle p6 破解版下载,Primavera P6项目管理软件 16~17 图文详细安装教程(附下载)

Primavera P6 Professional项目管理软件结合了Oracle和Microsoft SQL Server关系数据库,是一款非常好用且功能强大的综合的项目管理软件(PPM) 解决方案,主要用于土建等方面的施工计划分析,具有进度时间安排与资源控制功能的多用户、多项目系统,支持多层项目分层结构、角色与技能导向的资源安排、记录实际数据、自定义视图以及自定义数据,本文主要为大家图文详细介绍...

weixin_33978451的博客 4920

2.4G射频微带线阻抗匹配设计实战(WiFi/BLE)

本文深入探讨了2.4G射频微带线阻抗匹配在WiFi/BLE产品开发中的关键作用。文章详细解析了共面波导微带线结构,提供了基于SI9000工具的阻抗计算实战指南,并总结了不同PCB板厚下的设计参数对照表。同时,文章分享了PCB布局布线、与板厂沟通以及天线匹配调试等核心避坑经验,旨在帮助硬件工程师构建从射频芯片到天线的稳定高效传输通道。

j0k1l2m3n的博客 369

Java递归练习题

1,从键盘接收一个文件夹路径,统计该文件夹大小 package demo; import java.io.File; import java.util.Scanner; public class Test1 { public static void main(String[] args) { File file = getDirectory(); System.out.prin...

无区新手的博客 1724

BLDC控制实验:方波、霍尔、开环、定速、正转

本文记录博主学习BLDC控制软件的过程。 文章目录1 概述2 软件架构及工具链2.1 软件架构2.2 工具链3 底层代码生成3.1 时钟配置3.2 按键输入配置 1 概述 本文是博主第一次做BLDC控制实验,目的仅仅是写代码让BLDC转起来,而暂时不考虑其他复杂的需求。 控制的方法是比较简单的六步换相法。利用电机内部的霍尔传感器,通过参考电机厂家给出的二二导通换相表,生成方波来控制电机。第一次实验为了简化需求,只考虑开环、定速、正转的情况: 开环:不考虑速度反馈,直接给PWM让电机转起来; 定速:不考虑速

u013288925的博客 1万+

文件拷贝使用io流将一个指定目录文件拷贝到另一个磁盘的位置上

文件拷贝使用io流将一个指定目录文件拷贝到另一个磁盘的位置上 涉及知识点:缓冲流、文件字符流、File类、获取当前系统时间毫秒值、异常处理 编写时间:2019/7/20 具体思路如下: 1、先从简单的入手,考虑一下如何复制文件?所以我们创建一个类之后,可以先编写一个拷贝文件的方法,有两个参数:分别为:被拷贝文件路径和终点位置。流的输入输出概念是针对程序而言的,所以我们要先从起点位置将内容复制到程序...

qq_44053632的博客 2339

openlayers:实现在连续更改时间维度时如何平滑地重新加载层 (附完整源码)

openlayers:实现在连续更改时间维度时如何平滑地重新加载层 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 348

ESP8266开发之旅 基础篇① 走进ESP8266的世界

    欢迎大家来到ESP8266的世界,从现在开始,笔者将带领大家慢慢揭开ESP8266神秘的面纱。 1. 简介     从笔者的角度来说,ESP8266这个词可以理解为ESP8266EX芯片(当然,后面也有可能出现了其他芯片,这里首推ESP8266EX)以及依赖ESP8266EX芯片开发的系列模组的简称。     ESP8266EX是由乐鑫信息科技公司(Espressif)出品的一款应用于物联...

单片机菜鸟哥的博客 15万+

java中 File类 和 IO流相关操作

java中 file类 和 io 流 相关操作

xgq_111的博客 555

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java IO流经典练习题

本文对javaIO流的练习题做了比较详细的解答,其中有比较基础的,也有比较繁琐的,都是可以加深对javaIO流的全面的理解

wenzhi的博客 4万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JavaDay24——作业:目录拷贝(基于递归算法)

拷贝目录: 将 D:\JavaSEadvance\IOTest02\src\IOhomework\FileOut 拷贝到 C盘根 下… 需要使用到: FileInputStream FileOutputStream File 可能需要使用到递归。你尝试实现一下! package IOhomework; import java.io.*; public class ioHomeWork { public static void main(String[] ..

m0_38057941的博客 229

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IO学习(六)拷贝文件夹

文件夹用来把文件包裹起来,褪去这些外衣,说到底拷贝文件夹也就是拷贝文件 模拟实例:将F:/Picture/test 文件夹 拷贝到 F:/Picture/dir文件夹 该实例中test文件夹下只包含了test.txt文件 步骤分析: 1.通过路径得到File对象 2.递归查找子孙级文件夹或者文件 3.复制文件(同文件拷贝) 那么重点是在第二个步骤,我们可以通过File

Bazingaea的博客 1162

Java基础复习08:File类、字节流、字符流、缓冲流、转换流、序列化、打印流、Commons-io包介绍

Java基础复习08:IO流(File类与IO流概述、字节输入输出流、字符输入输出流、缓冲流、字符转换流、对象序列化、打印流、Commons-io包介绍)

qq_57030936的博客 428

java 复制指定目录中的所有文件和文件夹到另一个指定文件夹中

package com.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner; public class CopyFile { public static...

a867574567的博客 829

java中io流(文件流)的使用、资源加载笔记(一)

java中io流(文件流)的使用、资源加载笔记(一)

enthan809882的博客 1384

【Java学习总结】chapter07:IO流

第7章:IO流 使用字节流和字符流读写文件操作 使用File类访问文件系统 NIO和NIO.2的基本概念和用法 7.1 IO流概述 IO流的概念:IO(Input&Output)流即输入输出流,是Java中实现输入输出的基础,可方便的实现数据的IN&OUT IO流的分类: 分类方式 分类结果 根据流操作的数据单位 字节流、字符流 根据流传输的方向 输入流、输出流 根据流的功能 节点流、处理流 IO流顶级类的分类: 注意:4个顶级类都

https://blog.youkuaiyun.com/m0_74834215 313

手把手教你用Java代码批量解密绿盾加密文件(附完整源码)

本文详细介绍了如何使用Java代码批量解密绿盾(Ldterm)加密文件,包括环境配置、核心解密逻辑实现、批量处理与路径管理、异常处理与日志记录等关键步骤。通过完整的源码示例和性能优化建议,帮助开发者高效解决企业级文档加密文件的批量解密问题。

weixin_30383279的博客 385
上一篇: Test_Java_File类递归练习(删除该文件夹)
下一篇: Test_Java_File类递归练习(按层级打印)
Soar_Sir
博客等级 码龄10年 30粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值