java实现文件拷贝

Java实现文件拷贝 无论是备份文件,还是将文件从一个位置复制到另一个位置,文件拷贝都是必不可少的。通过这个简单的示例,我们希望能够帮助你了解如何使用Java实现文件拷贝功能。无论是拷贝小文件还是大文件,Java提供了强大的文件操作功能,使得文件拷贝变得轻松高效。首先,我们需要确定源文件和目标文件的路径。源文件是要被复制的文件,而目标文件是复制后的文件。我们使用一个缓冲区来存储读取的数据,并利用循环不断读取和写入,直到读取完整个文件。这样,当我们运行上述代码时,源文件将被复制到目标位置,并在控制台上输出"文件拷贝成功! 阅读详情

java实现文件拷贝

java实现文件拷贝主要用到File类和FileinputStream和FileoutputStream方法

拷贝主体

要拷贝文件,就得有源文件和你要拷贝到的目标目录,这里我们可以设置两个参数:源文件:“File source”,要拷贝到的目标目录"File targetDir"。
首先先判断目标目录是否存在,若果不存在就创建它,这一步分别用exists()、mkdir()实现。

		if (!targetDir.exists()) {
			targetDir.mkdirs();
		}

根据提供的源文件文件名,结合目标目录构建一个目标文件对象

		File target = new File(targetDir, sourceFile.getName());

开始拷贝,此时开始使用流的知识,先用inputStream和outputStream分别获取源文件和和目标文件的字节输入\出流,将获取到的输入流读取到声明好的字节数组中,此时用len来表示读取到的字节数组的长度,最后将读取到的字节数组写入到输出流中,使用Write时,一定到写明读入的数组名,读取的起始位置和长度。最最后一定要讲两个流全部关闭,否则看不到效果。期间的异常全部捕获。下面是代码:

		InputStream is = null;
		OutputStream os = null;
		try {
			is = new FileInputStream(sourceFile);
			os = new FileOutputStream(target);
			byte[] b = new byte[1024];
			int len = 0;
			System.out.println("开始拷贝...");
			while ((len = is.read(b)) != -1) {
				os.write(b, 0, len);
			}
			System.out.println("拷贝完成...");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				if (Objects.nonNull(os)) {
					os.close();
				}
				if (Objects.nonNull(is)) {
					is.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

判断目录

文件拷贝部分完成,然后再判断源文件是否是标准文件,标准文件即非目录文件,如果源文件是标准文件,则直接拷贝(上面做好的方法),源文件是目录的话,递归进入目录,重复执行创建目录行为。

if (source.isFile()) {
			copyFile(source, targetDir);
		}else {
			targetDir = new File(targetDir,source.getName());
			if (!targetDir.exists()) {
				targetDir.mkdirs();
			}
			//获取源目录下的所有子文件
			File[] subFiles = source.listFiles();
			if (subFiles != null) {
				for (int i = 0; i < subFiles.length; i++) {
					copy(subFiles[i], targetDir);
				}
			}
		}

测试

调用main方法

public static void main(String[] args) {
		File sourFile = new File("F:\\1");
		File tarFileDir = new File("E:\\");
		copy(sourFile, tarFileDir);	
	}

结果:
在这里插入图片描述
你学废了么?
下面是代码的全部体:

public class FileTools {
	public static void copy(File source,File targetDir) {
		if (source.isFile()) {
			copyFile(source, targetDir);
		}else {
			targetDir = new File(targetDir,source.getName());
			if (!targetDir.exists()) {
				targetDir.mkdirs();
			}
			File[] subFiles = source.listFiles();
			if (subFiles != null) {
				for (int i = 0; i < subFiles.length; i++) {
					copy(subFiles[i], targetDir);
				}
			}
		}
	}
	private static void copyFile(File sourceFile,File targetDir) {
		if (!targetDir.exists()) {
			targetDir.mkdirs();
		}
		File target = new File(targetDir, sourceFile.getName());
		InputStream is = null;
		OutputStream os = null;
		try {
			is = new FileInputStream(sourceFile);
			os = new FileOutputStream(target);
			byte[] b = new byte[1024];
			int len = 0;
			System.out.println("开始拷贝...");
			while ((len = is.read(b)) != -1) {
				os.write(b, 0, len);
			}
			System.out.println("拷贝完成...");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				if (Objects.nonNull(os)) {
					os.close();
				}
				if (Objects.nonNull(is)) {
					is.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		File sourFile = new File("F:\\1");
		File tarFileDir = new File("E:\\");
		copy(sourFile, tarFileDir);
		
	}
}
哈希拓展攻击CTF题做法 kali下载相关工具hash-ext-attack:hash拓展题目特征:2023楚慧杯upload_shell实验吧之让我进去:前言:具体怎么加密解密补位的原理我不懂,深入理解的部分我在文末挂了链接,以下也只是我做题的结论和通解,可能不准确(但是做题还挺准确),有错误欢迎指出:是在密码加密过程中引入的一个随机值,它与密码结合使用,目的是增加密码的复杂性和安全性。在密码加密中,常见的做法是将用户提供的密码进行哈希处理,然后存储哈希值而不是明文密码 阅读详情

相关推荐

深度学习赋能胶囊内镜:AI如何实现胃肠道出血的自动检测与分割

在计算机视觉领域,图像分类与目标检测是处理医学影像分析的核心技术。其原理在于通过卷积神经网络(CNN)自动学习图像中的多层次特征表示,实现对特定目标的识别与定位。这项技术的价值在于能够将医生从海量、重复的阅片工作中解放出来,提升诊断效率与一致性,尤其在处理如胶囊内镜产生的数万张连续图像时优势显著。其应用场景广泛覆盖了医学影像的辅助诊断,例如在消化内科,对胃肠道出血的早期发现与精准定位具有重要临床意义。本文聚焦于利用深度学习模型,如U-Net和EfficientNet,构建一个能够从复杂多变的胶囊内镜图像中,

weixin_42533910的博客 381

java 文件拷贝的四种方式

java 文件拷贝的四种方式

u013168615的专栏 1万+

Flutter框架GetX从入门到精通第二篇:路由管理-告别繁琐的Navigator

Flutter框架GetX从入门到精通第二篇:告别繁琐的Navigator。本系列将带你从零开始,一步步掌握 GetX 框架的核心功能与实战技巧。

鹏多多的博客 170

4种Java文件复制的方法

类是在 Java 1.4 中引入的,FileChannel 可用于在 java 中复制文件。根据transferFrom()方法 javadoc,这种复制文件的方式应该比使用 Streams 复制文件更快。这是可用于使用 FileChannel 复制文件的方法。这是可用于使用流的java复制文件的方法。如果您正在使用 Java 7 或更高版本,则可以使用Files类的copy()方法在 java 中复制文件。这是上面程序的输出,注意注释了上面的代码,以确保每次只使用一种方法进行 java 文件复制操作。

qq_30436011的博客 1万+

Claude Code本地Windows安装教程

本文介绍了在Windows系统上安装和配置Claude Code本地调用的详细步骤。首先需要确保网络畅通和账号余额充足,然后安装Node.js v22版本作为基础环境。接着通过npm全局安装Claude Code包,并进行版本验证。安装完成后,使用命令行登录并可以指定模型启动。最后还提供了切换API秘钥的方法,通过setup-token命令重新授权账号。整个过程配有详细的命令行示例和操作截图,方便用户按步骤完成安装配置。

猿小白的博客 2万+

QMK键盘固件开发零基础教程(2025全新重制版)

《QMK键盘固件开发零基础教程(2025全新重制版)》是一套专为键盘爱好者和开发者设计的全面教程,旨在帮助用户从零基础快速掌握最新的QMK固件开发技术。教程基于2025年最新的QMK版本(0.19.8+),解决了旧版教程中的诸多问题,如概念不清、步骤缺失和代码过时等。新版教程提供了详细的图解、完整的项目源码以及从环境配置到高级功能开发的全流程指导。此外,教程还涵盖了2024年QMK生态的重大变革,包括键码系统的重构、编译工具链的更新以及Config文件格式的改变等。付费版教程额外提供独家内容,如新特性解析、

Despacito0o的博客 1121

Java文件复制多种方法

java文件复制的方法有几种方式

LookingTomorrow的博客 1万+

群无人机航迹规划-虚拟管道

图源北理工全权老师团队虚拟管道相关论文,文字为个人理解,以ppt形式分享报告。

coldmood77的博客 669

Java利用File类实现copy复制操作

在实现复制操作前先要掌握io操作,如果不熟悉请看我的相关文章 在熟悉io流后,我们利用io实现文件的复制 public static void copy(File oldFile, File newFile){ try ( InputStream in = new FileInputStream (oldFile); OutputStream out = new FileOutputStream ( newFile )) {

PlutoHzl的博客 8450

TC3XX - MCAL知识点(三):MCU EB-tresos配置说明及代码浅析

AURIX 2G Tc3xx的配置相较AURIX 1G Tc2xx来讲简化了许多,但是依赖于数据手册的理解来讲整个MCU功能做了较大增强,此处先简单的介绍一下,本文前期先补充介绍一下英飞凌手册的阅读规则,因为后面的文章会基于此文的一些缩写进行截图寄存器之类的。MCU在AUTOSAR架构里面的图示如下MCU驱动程序负责配置SCU、GTM、CCU6、GPT12和STM外设。驱动程序提供由AUTOSAR指定的运行时服务。

梦想技术家 2874

【EB_Tresos专题】-01-EB Tresos导入工程

<--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> 结尾 ...

「汽车电子助手」的博客 6434

Java复制文件的几种方式 (含具体的效率比较)

部分内容参考了这篇博客 java复制文件的4种方式 - 夏嘻嘻嘻嘻嘻 - 博客园 一、字节流复制文件 这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。 这是第一个方法的代码: private static void copyFileUsingFileStreams(Fil...

wangpailiulanqi8的博客 2898

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

java编写程序实现文件拷贝_Java IO编程——文件拷贝

在操作系统里面有一个copy命令,这个命令的主要功能是可以实现文件的拷贝处理,现在要求模拟这个命令,通过初始化参数输入拷贝的源文件路径与拷贝的目标路径实现文件的拷贝处理。需求分析:·需要实现文件的拷贝操作,那么这种拷贝就有可能拷贝各种类型的文件,所以肯定使用字节流;·在进行拷贝的时候有可能需要考虑到大文件的拷贝问题;实现方案:·方案一:使用InputStream将全部要拷贝的内容直接读取到程序里面...

weixin_36277054的博客 2200

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java 实现文件拷贝

文章目录案例: 原始实现, 未优化注意, 代码问题第一次改进内容第二次改进: 解决读取慢的问题核心代码方法代码, 以后使用最多的形式 案例: 原始实现, 未优化 package com.cwq.beyond; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import j

Beyond_Nothing 1423

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java利用IO流拷贝文件的实现

Java利用IO流拷贝文件的实现 代码: package cn1; //拷贝代码到另一个文件 import java.io.*; public class CopyDemo { public static void main(String[] args) throws FileNotFoundException { //创建文件 File file = ...

Vaxue的博客 497

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java 拷贝文件的代码_Java实现拷贝文件详细代码

import java.io.*;import java.util.Scanner;public class CopyFile {public static void main(String args[]) {String src = "d:\\1.txt";String dest = "d:\\2.txt";System.out.println("---------------- 文件拷贝 --...

weixin_40003233的博客 603

java实现文件拷贝_java实现文件拷贝

如果想要实现文件的拷贝操作,那么现在有两种做法:1、将所有的文件内容一次性读取到程序之中,而后一次性输出;2、采用边读边输出的方,那么现在就不会占用过大的内存空间;由于现在有可能要拷贝二进制数据,那么一定使用字节流比较合适一下。如果输入参数正确了,那么应该进行源文件的验证。package com.gwolf;import java.io.File;public class TestDemo {pu...

weixin_39834084的博客 472

Java实现文件的拷贝复制

https://blog.youkuaiyun.com/persistencegoing/article/details/84376427 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class CopyFileDemo{ public static vo...

persistence勿忘初心 3370

Java实现文件的拷贝

前言 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为“流”,程序允许通过流的方式与输入输出设备进行数据传输。Java中的“流”都位于java.io包里,称位IO(输入输出)流 例如文件的拷贝就需要通过输入输出流来实现,以下案例可供参考 一、步骤 在eclipse中新建Java项目命名为FileCopy,并在当前目录下创建文件夹source和target,然后在

DXGD_ic的博客 4552

Java中实现拷贝文件

Java中实现拷贝文件 本文我们学习java中多种方式复制文件。首先使用标准IO和NIO2 api,然后利用第三方库实现。 IO API 首先,使用java.io api拷贝文件,需要打开流,循环遍历内容,写入另一个流: @Test public void givenIoAPI_whenCopied_thenCopyExistsWithSameContents() throws IOExce...

neweastsun的专栏 2778

java nio 文件拷贝_Java通过NIO实现快速文件拷贝的代码

将内容过程重要的内容片段做个记录,下面的内容段是关于Java通过NIO实现快速文件拷贝的内容。public static void fileCopy( File in, File out )throws IOException{FileChannel inChannel = new FileInputStream( in ).getChannel();FileChannel outChannel ...

weixin_35671798的博客 244

java实现的文件拷贝

文件拷贝 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class FileSplitCopy extends Thread{ /**源文件*/ private File source; /**目标文件*/ private File target; /**开始拷贝位置*/ private

qq_44302011的博客 198

Java中实现对IO操作文件的复制拷贝

Java中实现对IO操作文件的复制拷贝 package cn.look.file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class Co...

kings_的博客 980

用java实现拷贝目录以及目录下文件

用java实现拷贝目录以及目录下文件 创建一个File对象 /也可以说是确定一个文件对象 File f1 = new File(“D:\file”); //就相当于获取了这个文件对象,不管这个对象是否真实存在。 对文件操作,所以方法里调用的都是File对象 如果方法中不加static,会报这个错误。但如果main方法声明里不加static,下面的方法里也不用加,不会报错。 非静态方法的FileCopy(java.io.File文件, java.io.File文件)无法

Sunda_y的博客 4994

拷贝目录及文件 java实现

拷贝目录及文件 java实现 循环加递归

weixin_66084436的博客 361
上一篇: java 使用Calendar制作日历
下一篇: JAVA基于网络的文件下载
睡觉不打招呼
博客等级 码龄6年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值