20110830 java IO处理学习----一个自写文件复制类

技能伤害继承英雄属性【War3地图编辑器】 风暴之锤跟随山丘之王的力量增长 阅读详情

要说java 的IO处理因为有了很多类看起来是很方便的,虽然都封装好了很多算法细节,但是如果只看JDK 文档的说明还是十分困惑的,比如说BufferedReader类里面的readLine()方法,刚开始的时候光看名字我一直以为是读取行可以间接读取的,其实是不可以间接读取的,在自写的实现类似功能的模仿类的时候,因为想实现异步的读取行操作所以做了很多无谓的工作,还是没办法写出来比较好的方法。

为什么很难写出来比较好的方法呢?

有一部分原因是基于这个IO系统本身的复杂性,如果说 C语言的话虽然很多功能需要自己算法实现,但是还算简单,如果你一开始莫名其妙的不知道该用哪个类的话,我觉得这是一点也不奇怪的,还有十分古怪的装饰模式,我认为这是个很好的东西,但是就我自己说的话还是太复杂了,不过这倒和java的庞大特性很符合,其实我一直在追求的是内在的东西,如果不去探索内在只是每天学别人的代码敲来敲去,我认为是完全没有意义的,所以我尽量让自己的小练习里面有点自己设计的东西在里面。


但是做的还是不太好,因为写的时候感觉不很自信,有没好设计,不过过度阶段还是难免的,先上程序吧。

我想考SCJP啊!上帝保佑!

/*
*20110830作业
*简单实现了一个文件复制的操作,目前设计不到位的地方是不可以复制目录,没有写嵌套复制操作,而且File 类不太好用
×实现目标目录建立的时候不好操作,具体使用方法见主方法
*另外对参数类型的判断也不是特别到位,以后改进
×Younger.shen 申延刚 
×younger.x.shen@gmail.com
*blog: http://blog.youkuaiyun.com/hack2me
*/


import java.io.*;

public class CopyFileDemon{

	private File source = null;
	private File destination = null;
	private FileInputStream fis = null;
	private FileOutputStream fos = null;
	private String destPath = null;
	private byte[] buffer = new byte[1024*5];

	

	public CopyFileDemon(String s , String dPath,String d){
	
		source = new File(s);
		destPath = dPath;
		destination = new File(d);
	}

	private void copyFile(){
	
		//int length = 0;

		try{

			fis = new FileInputStream(source);
			//length = fis.available();
		
		}catch(IOException e){
		
			e.printStackTrace();
			System.out.println("读取失败或文件不存在");
			
			if(fis != null){
				try{
				
					fis.close();
				}catch(IOException ex){
				
					System.out.println("close file error");
				}
			}
			System.exit(0);
		}
			
		
			try{	
				//System.out.println("fun");

				if(!destination.exists()){
					
				
					File temp = new File(destPath);
					temp.mkdirs();

				}
			
				try{
				
					fos = new FileOutputStream(destPath+destination.getName());
				
				}catch(FileNotFoundException e){
					
						System.out.println("创建文件失败,可能是由于目录名和文件名冲突,请重新尝试");
				}
			
				int c = 0;
				long sum = 0;
				while((c=fis.read(buffer))!=-1){
					
					sum += c;

					try{
					
						fos.write(buffer, 0, c);
						long length = source.length();
						System.out.print((sum*100/length)+"%");
						System.out.print( "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

						//System.out.println((int)(sum/length)+"%");

					}catch(NullPointerException e){
					
						
					}
				}



			}catch(Exception e){
			
				e.printStackTrace();
		
			}finally{
				
				try{
					if(fos!=null)
					fos.close();
					if(fis!=null)
						fis.close();
				}catch(IOException e){
				
					System.out.println("close file error");
				}
			}
	}

	

	public static void main(String[] args){
	
		if(args.length ==3){
		
				CopyFileDemon index = new CopyFileDemon(args[0],args[1],args[2]);
				index.copyFile();
			
		}else{
			
			System.out.println("请使用完全路径,第一个参数是原文件");
			System.out.println("第二个参数是目标文件的目录 ");
			System.out.println("第三个参数是目标文件名 ");
			System.out.println("java CopyFileDemon  c:/1.txt d:/ 2.txt ");
		
	}


}
	}


Qt应用软件【协议篇】自定义协议处理串口半包贴包 Qt串口数据,半包,贴包,丢包数据处理 阅读详情

相关推荐

同济土木非0基础三个月跨考复旦计算机攻略

跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课

piglake的博客 7237

你的Java知识有多深?

来自:http://www.cnblogs.com/avenwu/archive/2012/02/24/2367304.html 前言 关于java的基础知识,只是在大二初学时看得多些,今天看了看张孝祥老师的视频,突然发现自己根本不了解Java很多东西,有些是忘了,而有些以前根本不知道,拿来分享一下,这些你曾注意吗?(牛人就不要往下看了)   1.“&”和“&&”的区别分析

hack2me---Just for fun 1462

Lama:基于傅立叶卷积的分辨率鲁棒性大掩模修复

为了缓解修复网络和损失函数都缺乏有效的感受野这个问题,提出了大掩模修复(LaMa)。LaMa基于一种新的修复网络架构,该架构使用快速傅立叶卷积(FFC),具有图像范围的感受野;高感受野感知损失;大型训练掩码,释放前两个组件的潜力。

qq_44926214的博客 1417

SmartRCP是什么

这是个好东西,果断备忘 本系列简要介绍怎样使用smartrcp构建强大可伸缩的桌面程序。项目地址:http://code.google.com/p/smartrcp/ SmartRCP是什么 SmartRCP是一个使用Java与Flex 编写

hack2me---Just for fun 822

ETL基础概念及要求详解

ETL即Extract(抽取)Transform(转换)Load(装载)的过程,如下图,同时也包括数据清洗的部分,是数据从源端到目标端的一个数据处理的过程,是构建数据仓库的重要一环,但不局限于构建数据仓库其他BI(商业智能)的设计和开发数据分析平台也经常用到ETL。

qq_43605229的博客 8944

dify智能体:日志管理与标注功能详解

日志管理与标注功能是优化聊天助手、Agent、文本生成应用、Chatflow 和工作流等工具交互体验的关键。日志管理允许用户查看、修改和标注日志,帮助回顾和优化交互内容。用户可以通过点击👍或👎按钮快速标注满意度,标注后的日志可用于后续优化和分析。标注功能则支持用户对交互内容进行标记和调整,以提升模型输出质量。此外,用户还可以调整界面语言和时区设置,确保在熟悉的环境中操作。这些功能共同作用,显著提升了交互体验和模型性能。

zyx_bx的博客 2711

今天的作业 java IO练习,一个山寨记事本,没什么技术含量

/* * 2011 08 29 java IO操作小练习 * Notepad 山寨记事本 * ×很多人都写过的东西,没记错的话已经是第二次写了吧,没什么技巧,也没什么算法,纯属熟悉程序的练手,一直想写一个完整的,还是先把作业交了再说吧 ×一直想把程序尽量规范起来,希望能进步快点

hack2me---Just for fun 794

SOC Boot学习(二)——JTAG Debug介绍

JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG 测试工具对内部节点进行测试。如今大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。

yttt的博客 1606

30日学习笔记,关于java的IO系统已经Decorarot模式

这是纯技术性质的总结,所以果断不废话。   关于 java I/O处理,其实我个人认为如果从一般学习者就是之前没有经验的人开始理解起来确实是比较困难的,这里我要作出一个对比,我想表达的是别人不曾表达的东西,关于概念性的基础中的基础的问题(比如说流是如何被比喻的,还有就是各种语

hack2me---Just for fun 774

《软件工程——实践者的研究方法》重难点复习笔记(第八章——理解需求)

8项需求工程任务 inception 开始 8.1.1 identify stakeholders 定义:从软件开发中收益 例如:市场人员、销售经理、顾客、顾问、维护团队等(P139) 8.1.2 这个阶段的问题是context-free的。有三套(P140) 8.1.3 提到NFR(nonfunctional requirement)和QFD(quality

whooiif的博客 1815

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细解析了使用Silvaco TCAD仿真例库进行肖特基二极管反向击穿特性分析的完整案例。通过构建包含浮空P型保护环的平面结构,重点阐述了针对雪崩击穿仿真的关键步骤,包括高精度网格划分、碰撞电离模型(impact selb)的启用以及反向电压的精细扫描策略。文章深入探讨了漂移区掺杂浓度、保护环设计等参数对击穿电压的影响,并提供了实用的调试心得,旨在帮助工程师精准预测和优化功率肖特基二极管的反向耐压能力。

fire9的博客 724

新手学习java的心得体会

<br /><br />/**2011年3月12日<br />* Hacked by Younger.shen<br />*http://www.hack2me.com<br />*younger.x.shen@gmail.com<br />*/<br /> <br />研究java也有几个月的时间了,现在想写一点心得体会,虽然我现在基本上还是停留在读书写程序片段死扣语法的阶段,但是我认为还是很有必要来写一写的。<br />首先对于java的认识让我一开始对java没有太多的好感,直到现在读了很多书之后才认

hack2me---Just for fun 755

ComfyUI 提示Allocation on device 显存占满的解决方法及秋叶整合包的优化方法

最近在玩ComfyUI的时候,发现一个让人崩溃的问题——VRAM一直占满,最终报错: 简单来说,就是显卡显存溢出了,导致程序无法继续运行。尤其是一些大模型或者复杂工作流,很容易让显存飙升到极限。那怎么办?直接在启动命令后加上 ,例如: 这个参数的作用是啥? 默认情况下,ComfyUI会尽量让模型一直留在显存里,即使有些部分暂时用不到,导致显存迟早被填满。而 可以强制让ComfyUI把数据卸载到常规内存,减少显存占用。如果你的显存真的不够用,还可以再加 参数: 这个参数的意思就是开启低显存模式,进一步优化

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

20110829 日作业,复制文件,简单IO操作,我自己扩展过的,比题干要求的功能多点

/* * 20110829 日作业 * coded by Younger.shen申延刚 younger.x.shen@gmail.com * blog : blog.youkuaiyun.com/hack2me * blog : youngershen.com/blog/ (you sh

hack2me---Just for fun 712

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

自编java细节(3)----之你不可能得到正确的结果

我很高兴这一刻我又有了新的进展,又找到了新的好玩的东西, 先来看看下面的一段程序 public static boolean isOdd(int i){ return i % 2 == 1; }你可否会考虑一下上面的方法是否总是正确,它是否会得到意想不

hack2me---Just for fun 670

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最近在练手的一个管理系统

当然做java ee的不可能没做过这样的小型ERP的吧,感觉相当无聊,不过练手也是必须的,在设计上,站在新手的角度上,要把业务逻辑和UI实现分开,然后用OOP的设计模式分布把系统完善出来,是相当不容易的,因为没有任何经验,都是一边摸索一边在做的。 还有这个系统目前只是整个系统中的一个子集,希望能够把代码重用的精髓突出出来,java就像钢琴一样,要弹的好的话需要2点,首先是有天赋,然后是从小

hack2me---Just for fun 658

VB摄像头监控

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

最近项目的 core逻辑核心程序

这次的设计也算是失败了百分之40的,不过拿来练手也确实是学到了很多东西,学会了解决问题的很多不通的方法,整个系统是一个子集而已,还需要很多完善,而且想做一个高仿的,看来还是需要继续改进,最近又要忙了,自己给自己打气,晓儿,你加油哦! package com.youngershen.mrp;import java.util.*;import java.sql.*;//°ÑžÃ

hack2me---Just for fun 561

2011 下学期计划

I have seen thefuture , It is in my browser      这个题目是我突然找到到的现在我手中有一张田爱娜的名片,名片的反面写着这样的一句话,当然这是html5小组的口号。 开放互联网给了很多人很多梦想与希望,html5又一次给了每个人

hack2me---Just for fun 527

2011 09 15 学习笔记

一直在进行增删改查的联系,mysql可真够没意思的,就插入一个图片,折腾了一晚上,也不知道是什么情况,从来没人告诉我数据库的编码是 gbk的话就插不进去图片,无意中发现一个帖子才解决了问题, 如果你在mysql中插入图片的时候出现奇怪的报错信息,通常都是 sql语句的语法错,而

hack2me---Just for fun 514

2011 0907学习总结

2011 09 07 学习总结 今天上课的时候主要学习的是java的线程调度,说到底最关键的还是2个方法 wait和notify这两个方法是非常关键的,在进行线程调度的时候由于书本上和老师总结的都不十分完全,所以我现在必须要把问题说清楚,明明白白的说清楚,就我今天晚上帮同学解决

hack2me---Just for fun 504

20110831日的总结--关于原始流与字符流之间的转换中的设计问题

关于原始流与字符流之间的转换中的设计问题   装饰模式在这里显然派上了很大的用用场,现在先分析一下InputStramReader到底是如何将原始流包装成字节流的。 明显他们中间的主接口是 InputStream,这个接口主导了其中的设计,使各个类之间能够方便被相互修饰,说

hack2me---Just for fun 497

自编java细节(1)

也是暑期時候寫的, 之前發布於 http://youngershen.com/blog 自编java细节(1) on August 13th, 2011 by youngershen | No Comments » java 是很强

hack2me---Just for fun 482

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 289

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 198

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 130
上一篇: 20110829 日作业,复制文件,简单IO操作,我自己扩展过的,比题干要求的功能多点
下一篇: 30日学习笔记,关于java的IO系统已经Decorarot模式
程序员迈克
博客等级 码龄16年 36粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值