Java io copy 复制文件的几种场景

Java 的几种文件拷贝方式 Files.copy方法在Java中是用来复制文件的一种高级操作,它是基于Java NIO(New Input/Output)的文件API实现的。需要注意的是,在某些操作系统和文件系统中,transferTo 方法可能会限制传输的最大字节数,因此在实际使用中可能需要进行分块传输。使用FileInputStream和FileOutputStream是实现文件拷贝的一种直观且简单的方法,尽管它不如NIO提供的Files.copy方法高效,但在某些情况下仍然非常有用。 阅读详情


1、把某一磁盘目录下的所有文件(包含磁盘的深层目录) 复制到指定的一个目录的下

例如  e:/ 下所有递归到的pdf文件,复制到 d:/temp目录下



package daoImpl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
/**
 * @ClassName:     CopyFolder.java
 * @Description:   TODO(把某一磁盘目录递归到的指定文件类型,复制到某一目录下) 
 * 
 * @author         Administrator
 * @E-mail         809044093@qq.com 
 * @version        V1.0  
 * @Date           2014-3-19 上午09:11:46 
 */
public class CopyFolder {

	 //允许复制的文件类型
	public static String[] filterFile = { ".java", ".xml", ".xdl",
			".properties", ".sql", ".jupiter", ".wsdl" , ".pdf", ".html" };
	private long total = 0l;

	public static void main(String[] args) throws Exception {

		Scanner scanner = new Scanner(System.in);
		String answer = null;
			//源路径
			File src = new File("e:/");
			//目标路径
			File des = new File("D:/temp");
			new CopyFolder().copyFolder(src, des, filterFile);

	}

	/**
	 * 
	 * @Title: copyFolder
	 * @Description: TODO(复制文件)
	 * @param: @param srcFolder(源路径)
	 * @param: @param destFolder(目标路径)
	 * @param: @param filterFile(允许复制的文件类型)
	 * @param: @throws Exception   
	 * @return: void   
	 * @throws
	 */
	public void copyFolder(File srcFolder, File destFolder, String[] filterFile)
			throws Exception {
		File[] files = srcFolder.listFiles();
		for (File file : files) {
			if (file.isFile()) {
				String pathname = destFolder + File.separator + file.getName();
				for (String suff : filterFile) {
					if (pathname.endsWith(suff)) {
						File dest = new File(pathname);
						File destPar = dest.getParentFile();
						destPar.mkdirs();
						if (!dest.exists()) {
							dest.createNewFile();
						}
						copyFile(file, dest);
					}
				}
			} else {
				copyFolder(file, destFolder, filterFile);
			}
		}
	}

	/**
	 * 
	 * @Title: copyFile
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param: @param src
	 * @param: @param dest
	 * @param: @throws Exception   
	 * @return: void   
	 * @throws
	 */
	private void copyFile(File src, File dest) throws Exception {
		FileInputStream input = null;
		FileOutputStream outstrem = null;
		try {
			 input = new FileInputStream(src);
			 outstrem = new FileOutputStream(dest);
			 outstrem.getChannel().transferFrom(input.getChannel(), 0,input.available());
			total++;
			String temp =String.format("\ncopy:%s size:%s to: %s complate: %s", src,src.length(),dest,total); 
			System.out.print(temp);
		} catch (Exception e) {
			throw e;
		} finally {
			outstrem.flush();
			outstrem.close();
			input.close();
		}
	}
}


2、递归复制文件到另外一个目录下


/**
	 * 复制一个目录及其子目录、文件到另外一个目录
	 * @param src
	 * @param dest
	 * @throws IOException
	 */
	
	private void copyFolder(File src, File dest) throws IOException {
		if (src.isDirectory()) {
			if (!dest.exists()) {
				dest.mkdir();
			}
			String files[] = src.list();
			for (String file : files) {
				File srcFile = new File(src, file);
				File destFile = new File(dest, file);
				// 递归复制
				copyFolder(srcFile, destFile);
			}
		} else {
			InputStream in = new FileInputStream(src);
			OutputStream out = new FileOutputStream(dest);

			byte[] buffer = new byte[1024];

			int length;
			
			while ((length = in.read(buffer)) > 0) {
				out.write(buffer, 0, length);
			}
			in.close();
			out.close();
		}
	}
	

方法二

        
	public void test(){
		File file = new File("E:/findbugs-2.0.2");
		File tofile = new File("c:/test");
		try {
			FileUtils.copyDirectory(file, tofile);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}















java中对文件读写操作的几种方式 如果我们要从一个文件向另一个文件中写数据,那么会有几种方式呢,来看下。 阅读详情

相关推荐

ADC选型实战:从参数指标到精准应用的工程指南

本文深入解析ADC(模数转换器)选型的关键参数与实战技巧,涵盖分辨率、转换误差等核心指标,并提供高精度温度测量、高速数据采集等五大应用场景的选型指南。通过实际案例和代码示例,详细讲解校准方法、功耗优化策略及常见问题排查,帮助工程师实现从参数指标到精准应用的工程实践。

weixin_29166013的博客 324

4种Java文件复制的方法

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

qq_30436011的博客 1万+

Index-TTS-1.5:多模态语音合成的技术演进与商业落地实践

本文深入探讨了Index-TTS-1.5在多模态语音合成领域的技术演进与商业落地。该模型基于GPT风格的自回归Transformer架构,通过优化条件编码器和引入字符-拼音混合建模,显著提升了语音生成的稳定性、精准度和真实感,实现了高质量的零样本语音克隆。文章还详细介绍了其云端体验、本地WebUI部署及ComfyUI集成等实战路径,并分析了其在虚拟数字人、个性化内容创作等商业场景中的应用潜力与挑战。

weixin_29098367的博客 400

Java文件复制多种方法

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

LookingTomorrow的博客 1万+

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2247

Python 爬虫实战:爬取 Bing 搜索功能链接(国际搜索引擎数据采集技巧)

在当今数字化信息爆炸的时代,搜索引擎已成为我们获取知识、了解世界的得力助手。Bing,作为全球知名的搜索引擎之一,拥有庞大的数据索引和精准的搜索算法。通过 Python 爬虫技术爬取 Bing 搜索区域的链接信息,不仅能帮助我们快速收集大量有价值的数据,还能为后续的数据分析、内容挖掘等任务提供丰富的素材。

yansideyucsdn的博客 1339

java 文件拷贝的四种方式

java 文件拷贝的四种方式

u013168615的专栏 1万+

MIT液态神经网络(LNN)深度研究:原理、应用与未来

液态神经网络(Liquid Neural Networks, LNNs)代表了人工智能领域,特别是神经网络架构设计中的一次范式转移。它从根本上挑战了传统深度学习模型依赖大规模参数和静态架构的惯例,转而寻求一种更为动态、高效且受生物神经系统启发的计算范式。LNN的核心创新在于其将神经网络的计算过程从离散的、基于时间步的更新,转变为连续的、由微分方程驱动的动态系统演化。这种转变不仅赋予了模型前所未有的适应性和鲁棒性,还使其在处理复杂的时序数据和因果推断任务时表现出色。本章节将深入剖析LNN的技术原理,从其核心的

步子哥的博客 2583

JAVA 拷贝文件的几种方式

闲话少叙,今天主要讲讲 JAVA 四种拷贝文件的方式,分析一下他们对内存使用的方式和各自应用的场景,其实也是对之前学过的知识做一个回顾吧,毕竟太久不回顾的话,记忆就像拼图,随着时间流逝就只剩下散落一地的碎片了。对于 JAVA 文件拷贝来说,本文只是展示和介绍了冰山一角,实际上对于读写流操作,操作系统的实现经过了长时间的演化,从CPU 中断到pagecache,从sendFile到DMA,以及网络传输过程中的bioniopoll和epoll,操作系统经过很多年的演化其中文件和网络的传输处理的复杂程度可想而知。

XPlaza的博客 2165

ZYNQ USB按键读写操作详解:从裸机到Linux系统的完整实现

USB接口在现代嵌入式系统中扮演着至关重要的角色,而按键作为最基础的人机交互设备,其与USB的结合能够实现丰富的应用场景。这种实现不仅适用于简单的键盘应用,还可以扩展为游戏控制器、专业输入设备或工业控制面板,展现了ZYNQ在嵌入式USB应用中的强大灵活性。:USB控制器需要准确的时钟源,通常使用外部33MHz晶振,并在Vivado中正确配置。结合ZYNQ的PL(可编程逻辑)和PS(处理系统)优势,可以创建创新的USB按键应用。本文详细介绍了在ZYNQ平台上实现USB按键读写的完整方案,涵盖了从。

QQ_778132974的博客 375

AIGC实战——变分自编码器(Variational Autoencoder, VAE)

变分自编码器通过在模型中引入随机性,并限制潜空间中的点的分布来解决自编码器存在的问题。只需进行一些微小的调整,就可以将自编码器转换为变分自编码器,从而使其成为真正的生成模型。在本节中,我们介绍了变分自编码器的基本原理,并使用 `Keras` 实现了一个变分自编码器用于生成 Fashion-MNIST 图像。

盼小辉丶的博客 1万+

Java IO流实现文件复制

Windows文件复制时我们是使用Ctrl C复制Ctrl V粘贴,上一篇文章Java基础入门·对存储文件的相关操作,我们学习了Java IO流对文件的读写操作,那我们可以思考一下,字节的读取和写入,怎样运用到文件复制的操作中?

冰小九的博客 2052

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2601

Java 实现文件复制及文件夹复制

在Java中,有多种方法可以实现文件的复制。以下是几种常用的方式:使用字节流进行复制:通过FileInputStream和FileOutputStream分别创建源文件和目标文件的输入输出流,然后通过循环读取源文件内容,并将数据写入目标文件中进行复制。可以使用字节数组作为缓冲区,提高复制效率。需要手动处理流的打开、关闭和异常处理。使用字符流进行复制:通过FileReader和FileWriter分别创建源文件和目标文件的字符流,然后通过循环读取源文件内容,并将数据写入目标文件中进行复制。

qq_57570052的博客 6961

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何使用 Java IO 进行文件复制?

本文全面介绍了Java IO文件复制的4种实现方案,从基础到高效逐步优化。核心原则包括必须使用字节流处理所有文件类型、利用缓冲区提升效率、正确关闭资源等。详细讲解了基础字节流、缓冲区字节流、缓冲流包装以及NIO方案,每种方案均附完整代码示例和性能分析。重点推荐缓冲流包装方案作为生产环境首选,兼顾效率与简洁性,适合处理各种大小的文件。文章还提供了路径处理、异常管理等实用技巧,帮助开发者彻底掌握文件复制技术。

2508_94528194的博客 1040

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java复制文件的几种方法

1. 使用FileInputStream public static void copy(File source, File destination) { try(FileInputStream fis = new FileInputStream(source); FileOutputStream fos = new FileOutputStream(destination)){ byte[] bytes = new byte[2048]; int read; while ((

四万八千里 606

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)

java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 7050

java中复制文件的方法 文件复制的几种实现方式

如果目标文件已经存在,需要注意的是,REPLACE_EXISTING 该选项将覆盖原始文件。在实际应用中,选择哪种方法取决于您的具体需求。假如你需要有效地处理大文件,NIO 的 Files.copy 方法是个不错的选择。首先,让我们看看最原始的文件复制方法,并使用它 Java 输入输出流(InputStream 和 OutputStream)。但需要注意的是,引入第三方图书馆会增加项目依赖性,可能会影响项目的可移植性和维护成本。虽然这种方法是直观的,但需要手动管理缓冲区的大小,这可能会导致性能问题。

qq360737395的博客 318

Linux IO和Zero Copy总结

前言 最近工作中一个系统要基于cannal订阅binlog数据,然后本地消费,但是发现IO居高不下,通常情况达到150%以上,顺着这个问题阅读了canal中关于网络数据处理的源码,发现性能并不是好,后面不得不切换到改用kafka消费,而kafka作为一个高性能消息处理中间件能够实现海量消息处理的一个因素是因为Zero Copy,借此机会重新总结了下Linux下IO的一些知识。 几种IO介绍 ...

Kubernetes云计算的专栏 751

Java 复制文件代码_Java复制文件的4种方式

尽管Java提供了一个可以处理文件的IO操作类。 但是没有一个复制文件的方法。 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候。 然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式。1. 使用FileStreams复制这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写...

weixin_35953861的博客 823

Java文件快速copy复制

最近学习netty的时候发现nio包下有个FileChannel类,经过了解这个类作用是个专门负责传输文件的通道,支持多线程,而且经过反复多次测试FileChannel复制文件的速度比BufferedInputStream/BufferedOutputStream复制文件的速度快了近三分之一。在复制大文件的时候更加体现出FileChannel的速度优势。而且FileChannel是多并发线程安全的。代码也比较简洁 代码贴下 package com.niu.nio; impo..

weixin_52358523的博客 197

为什么大文件复制必须用NIO?:3个真实场景告诉你IO的性能瓶颈

掌握高效文件复制方案,解析Java IO 与 NIO 的文件复制性能差异。通过大文件传输、高并发读写和零拷贝场景,揭示NIO为何更优。了解通道、缓冲区等核心机制,突破传统IO瓶颈,提升系统性能,值得收藏。

Instrustar的博客 1020

一个java文件复制代码_Java文件快速copy复制实例代码

本篇文章小编给大家分享一下Java文件快速copy复制实例代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。前言最近学习netty的时候发现nio包下有个FileChannel类,经过了解这个类作用是个专门负责传输文件的通道,支持多线程,而且经过反复多次测试FileChannel复制文件的速度比BufferedInputStream/Buffere...

weixin_31995467的博客 462

364. Java IO API - 复制文件和目录

Java提供了Files.copy()方法实现文件和目录的复制操作。基本用法是Files.copy(sourcePath, targetPath),但目标存在时会抛出异常。可通过StandardCopyOption选项控制复制行为,如REPLACE_EXISTING替换已存在文件、COPY_ATTRIBUTES保留文件属性等。注意复制目录时不会自动包含子内容,需要递归处理。方法还支持流操作,可将InputStream复制到文件或将文件复制到OutputStream。常见问题包括目标文件存在异常、目录复制不完

yaoxin521123的博客 262

文件复制语法糖Files.copy(地址,输出流)

     在我们开发中经常会遇到文件复制操作,基于代码可读性原则,再次推荐一个类库的操作方法,具体代码如下: package 设计模式.Single_Thread_Execution.源码底层; import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths;...

蜡笔小明的博客 8940

java递归复制文件及文件夹

package base; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.File; import java.io.InputStream; import java.io.OutputStream; public c

对你偏爱 4514
上一篇: 系统内集成支付宝接口在生产机需要开放的访问ip和端口
下一篇: Apache负载均衡设置方法: mod_proxy
prefectjava
博客等级 码龄16年 26粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值