JavaSE_day40(字节流复制图片,字节流与File实现复制目录到另一个目录下)

news2025/1/10 20:42:54

1 A.java

 * 1.分别使用字符流和字节流复制图片(底层是二进制文件,如图片 视频 音频等)
 * 
 *         二进制文件只能使用字节流进行复制(使用windows自带记事本打开读不懂的)
 * 
 *         文本文件的复制即可使用字符流,也可以使用字节流
 * 
 * 
 * 2.图解:字符流复制文件的解析

public class A {
	public static void main(String[] args) throws IOException  {
//		method();  //说明不能用字符流来复制图片
		
		method2();
	}

	private static void method2() throws FileNotFoundException, IOException {
		//创建字节输入流对象--要读的
		FileInputStream fis = new FileInputStream("1.png");
		//创建字节输出流对象--要输出的的
		FileOutputStream fos = new FileOutputStream("file/22.png");  //成功输出,图片也是一模一样
		
		
		//一次读写一个字节数组
		int len;//用于存储读到的字节个数
		byte[] bys = new byte[1024];
		while((len = fis.read(bys)) != -1) {
			fos.write(bys,0,len);
		}
		
		//释放资源
		fos.close();
		fis.close();
	}

	private static void method() throws FileNotFoundException, IOException {
		//创建字符输入流对象
		FileReader fr = new FileReader("1.png");
		//创建字符输出流对象
		FileWriter fw = new FileWriter("file/12.png");
		
		//一次读写一个字符数组
		int len;//用于存储读到的字符个数
		char[] chs = new char[1024];
		while((len = fr.read(chs)) != -1) {   //执行完图片啥都没有
			fw.write(chs,0,len);
			fw.flush();
		}
		
		//释放资源
		fw.close();
		fr.close();
	}
}

 

2 B.java

 * 需求:将指定目录(包含内容)复制到另一个目录中
 * 
 * 源目录        目标目录
 * 
 * 
 * 分析:
 *         1.首先我们要获取源目录下所有的文件和子目录,
 *                 我们可以把源目录封装成一个File对象,
 *                 我们可以调用File类listFiles()方法,
 *                 我们可以获取源目录下所有的文件和子目录所对应的File对象。
 *         2.如果我们获取到的是文件
 *                 先在目标目录中创建该文件所对应的目录,
 *                 进行文件的复制。
 *         3.如果我们获取到的是子目录
 *                 看看子目录下面是否还有其他的文件和更深层次的子目录
 * 

public class B {
	public static void main(String[] args) throws IOException  {
		//源目录src
		File src = new File("file");//  假设:  d:\\myAPI
		//目标目录dest
		File dest = new File("copyfile");//  假设: d:\\a
		System.out.println(src.isDirectory());
		System.out.println(dest.isDirectory());
		copyDir(src,dest);
	}
	
	public static void copyDir(File src,File dest) throws IOException {
		//为了严谨起见,我们首先对源目录和目标目录进行判断,看他们到底是不是目录
		if(src.isDirectory() && dest.isDirectory()) {
			//1.创建新的目录(将源目录放到目标目录下)d:\\a\\myAPI
			File newDir = new File(dest , src.getName());
			if(!newDir.exists()) {
				newDir.mkdir();
				System.out.println("已创建目录:"+newDir);
			}
			
			//2.获取源目录下所有的文件和子目录,获取myAPI目录的所有文件
			File[] files = src.listFiles();
			//遍历数组获取
			for (File file : files) {
				//如果File对象是文件,我们就进行文件的复制
				if(file.isFile()) {
					//创建输入流对象,要读取的是MyAPI下的某个文件
					FileInputStream fis = new FileInputStream(file);
					//创建输出流对象,要输出到的是新目录下,名字一致的File
					FileOutputStream fos = new FileOutputStream(new File(newDir,file.getName()));
					//一次读取一个字节数组
					byte[] bys = new byte[1024];
					int len;
					while((len = fis.read(bys)) != -1) {
						fos.write(bys, 0, len);
//						System.out.println("?");
					}
					fis.close();
					fos.close();
				}
				//如果File对象是子目录,递归,看看子目录下面到底有什么
				else if(file.isDirectory()) {
					//递归:file作为源目录,newDir(d:\\a\\myAPI)作为目标目录,形成新的目录:d:\\a\\myAPI\\之前myAPI下的目录
					copyDir(file,newDir);
				}
			}
		}
		else{
			System.out.println("np");
		}
		
	}
	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据分享】第六次、第七次人口普查深圳各街道数据

0. 数据来源 https://tjgb.hongheiku.com/ https://www.hongheiku.com/sichuan/55201.html 手动收集整理 数据展示 数据分享 只分享人口数据,地理数据可能涉及隐私问题,暂不分享,有需要可以邮箱联系uncodongqq.com 链接: https://pan.baid…

Hive ---- 分区表和分桶表

Hive ---- 分区表和分桶表 1. 分区表1. 分区表基本语法2. 二级分区表3. 动态分区 2. 分桶表1. 分桶表基本语法2. 分桶排序表 1. 分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中…

信必优加入中国网络信息安全科技创新发展联盟

近日,信必优成功加入中国网络信息安全科技创新发展联盟。 中国网络信息安全科技创新发展联盟是在国务院国资委指导下,中国电科与公安部第一研究所、中国信息通信研究院、中国工业互联网研究院、中国科学院信息工程研究所、中国电信、中国联通、中国移动、…

2023年武汉住建厅七大员怎么报名?报名流程?精准题库一次过??

2023年武汉住建厅七大员怎么报名?报名流程?精准题库一次过?? 2023年武汉住建厅七大员是指施工员、质量员、资料员、材料员、机械员、标准员、劳务员,报的最多的可能就是施工员,质量员和资料员 报名流程: 1…

算法:回溯算法(以解决n皇后问题为例)

基本思想:回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。八皇后问题就是回溯算法的典型,第一步按照顺序放一个皇后,然后第二步符合要求放第2个皇后,如…

自动化测试套件(RSpec)

自动化测试套件(RSpec) RSpec example RSpec 是 Ruby 编程语言的测试框架。 它旨在通过提供用于定义和执行测试的领域特定语言 (DSL) 来促进行为驱动开发 (BDD)。 RSpec 允许您编写富有表现力和可读性的测试来描述代码的预期行为。 以下是 RSpec 的一些关键特性和概念&#…

电脑怎么打开隐藏文件夹?1分钟搞定!

案例:我的电脑上有一些文件夹是隐藏文件夹啊,我不知道如何打开它们,有没有小伙伴知道如何打开电脑上的隐藏文件夹吗? 【我能正常打开电脑上的其他文件夹,但是打不开电脑隐藏的文件夹,有没有小伙伴知道打开…

浪涌保护器的工作原理(SPD)

浪涌保护器(SPD)的工作原理如下: 在正常运行期间(例如,在没有浪涌的情况下),电涌保护器对安装它的电路系统没有影响。它的作用类似于开路,并保持有源导体和大地之间的隔离。 当发生…

2023年真无线蓝牙耳机买什么品牌好一些?盘点几款值得买的蓝牙耳机

蓝牙耳机是一种无线耳机,其通过蓝牙技术与其他设备进行连接,例如手机、电脑、平板电脑等。蓝牙耳机使得用户可以在不受线缆限制的情况下享受音频体验,而且还可以方便地进行通话,目前市场上有许多不同种类和品牌的蓝牙耳机&#xf…

【滤波】设计卡尔曼滤波器

本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第8章节08-Designing-Kalman-Filters(设计卡尔曼滤波器)。 %matplotlib inline#format the book import book_format book_format.set_style()简介 在上一章节中,我们讨论了教…

Linux进程地址空间——上篇

目录 一. 前言: 二.进程地址空间 1.通过一个例子去初步的了解进程地址空间: 使用VS写了一段代码: 在Linux中使用vim编辑器写类似的代码: 结果解析: 2.什么是进程地址空间? 举个例子大家就明白了画饼的…

手机图片怎么提取文字?高效渠道一览

随着智能手机的普及,我们现在可以随时随地使用手机拍照记录生活中的点滴。然而,有时候我们拍照之后可能需要提取图片中的文字,比如拍下的菜谱、公告、名片等等。这时,我们就需要使用手机图片提取文字的功能。 - 采用OCR技术拍照识…

SpringBoot+Vue 实现网页版人脸登录、人脸识别!【全部开源】

介绍 FACE-UI 基于前后端分离Web端项目,主要实现了网页版的人脸登录,通过调取前端摄像头拍照,传入后台进行跟数据库人脸库的相似度比对。 技术点:Springboot,Mysql,JWT,VUE 2.X 等等技术实现&…

【Netty】使用 SSL/TLS 加密 Netty 程序(二十)

文章目录 前言一、SSL/TLS概述二、Sslhandler类 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二)Netty Channel 概述(三)Netty ChannelHandler(四)ChannelP…

EnjoyVIID部署

1、下载 git clone https://gitee.com/tsingeye/EnjoyVIID.git 2、导入数据库 创建表enjoyviid 导入数据库(修改数据库文件里的编码) EnjoyVIID/sql/tsingeye-viid.sql 3、修改配置 vim EnjoyVIID/tsingeye-admin/src/main/resources/application-dev.yml 修改数据库连接、re…

clickhouse的BACKUP/RESTORE命令介绍

clickhouse的数据备份和恢复功能在大数据运维中是非常常用的功能,目前也有很多比较优秀的开源方案可供选择,比如clickhouse-backup, 以及clickhouse自带的clickhouse-copier。 本文介绍使用clickhouse自带的BACKUP和RESTORE命令进行备份和恢复…

vue实现验证码登陆

我们在使用 vue进行前端开发时,都需要登录验证,而在登录的过程中,用户需要输入自己的用户名和密码,如果是输错的话还需要进行再次输入。这样不仅容易造成用户密码泄露,还会影响用户体验。因此在我们的系统中都会存在验…

【深入浅出Spring Security(二)】Spring Security的实现原理

Spring Security的实现原理 一、实现原理二、内置Filter以及默认加载的Filter三、自动配置分析(SpringBootWebSecurityConfiguration)ConditionalOnMissingBean 四、自己配置SecurityFilterChain 一、实现原理 在 Spring Security 中,认证、…

交直流混合配电网潮流计算(统一求解法)

目录 1 主要内容 算例模型 统一求解法迭代方程 算法流程图 2 部分代码 3 程序结果 4 程序链接 1 主要内容 该程序为matlab代码,采用统一求解法对交直流混合配电网进行潮流计算,统一迭代法又称统一求解法,其思路是将混联系统中的交流网…

FPGA串口发送数据

module Uart(input clk, //H3input rst, //F10output reg TX //串口发送脚M12 );reg[9:0] buffer 10b1_1100_1010_0; //接收方:0XCA parameter SND_T 5208; //9600bps reg [15:0] cnt 0; //数据宽度计数 always (posedge clk or negedge rst) beginif(!rs…