工具/原料
一台配置了java环境的电脑
一款适合自己的开发集成环境,这里用的是eclipse Kepler
文件拷贝DEMO
1.首先,理清思路,然后我们再动手 *** 作。
拷贝,有源文件,和目的文件。
如果原文件不存在,提示,报错。
如果目的文件不存在,创建空文件并被覆盖。
如果目的地址,也即目的路径不存在,创建路径。
拷贝,输入流,输出流,关闭流。
拷贝前输出文件大小,计算拷贝大小,比较并核实。输出。
2.首先呢,先判断传参是否完整。
如果不够两个参数,或者多于两个参数,提示错误。
如果目标文件不存在,创建 空文件继续复制。
3.在开始前,输出被拷贝的源文件的大小。
4.获得文件名称,即短名。也即路径下的文件全名(包括文件扩展名)。
5.拷贝的关键,这里用的简单的缓冲流。从源文件到目的文件。
number of bytes copied 即是对拷贝长度的累计,直到拷贝完成,输出。
6.将步骤二中的判断并拷贝文件的代码写在一个main函数中,
执行拷贝,拷贝完成。结果拷贝大小和源文件大小一致,成功。
7.在执行前,记得输入参数。
如果是使用命令提示符,执行 javac CopyFile.java 之后,
执行 java CopyFile [源文件长名] [目的文件长名]
如果是使用的eclipse,在运行前设置一下运行参数,完成后点击运行,如下图。
P.S. 这里面的所谓“长名”是指完整绝对路径+文件名+文件类型扩展名
这里的源文件及目的文件的名称分别为:
E:/IP_Data.rar 和 D:/testFiles/IP_Data.rar
END
import java.io.File\x0d\x0aimport java.io.FileInputStream\x0d\x0aimport java.io.FileNotFoundException\x0d\x0aimport java.io.FileOutputStream\x0d\x0aimport java.io.IOException\x0d\x0apublic class Copy {\x0d\x0a/**\x0d\x0a* @param args\x0d\x0a*/\x0d\x0apublic static void main(String[] args) {\x0d\x0a// TODO Auto-generated method stub\x0d\x0aif(args.length!=2){\x0d\x0aSystem.out.print("没有输入正确数目的参数,程序退出!")\x0d\x0aSystem.exit(0)\x0d\x0a}\x0d\x0aFile fileS = new File("./"+args[0])\x0d\x0aFile fileD = new File("./"+args[1])\x0d\x0aif(fileD.exists())System.out.println("目标文件 "+args[1]+" 已存在!")\x0d\x0abyte[] temp = new byte[50]\x0d\x0aint totalSize = 0\x0d\x0atry {\x0d\x0aFileInputStream fr = new FileInputStream(fileS)\x0d\x0aFileOutputStream fo = new FileOutputStream(fileD)\x0d\x0aint length = 0\x0d\x0awhile((length = fr.read(temp, 0, temp.length)) != -1){\x0d\x0atotalSize += length\x0d\x0afo.write(temp, 0, length)\x0d\x0a}\x0d\x0aSystem.out.println("文件 "+args[0]+" 有 "+totalSize+" 个字节")\x0d\x0aSystem.out.println("复制完成!")\x0d\x0a} catch (FileNotFoundException e) {\x0d\x0a// TODO Auto-generated catch block\x0d\x0ae.printStackTrace()\x0d\x0aSystem.out.println("源文件 "+args[0]+" 不存在!")\x0d\x0a} catch (IOException e) {\x0d\x0a// TODO Auto-generated catch block\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0a}Java代码
/**
* // 从旧文件拷贝内容到新文件
* // 删除旧文件
* @param oldPath the path+name of old file
* @param newPath the path+name of new file
* @throws Exception
*/
private void transferFile(String oldPath String newPath) throws Exception {
int byteread =
File oldFile = new File(oldPath)
FileInputStream fin = null
FileOutputStream fout = null
try{
if(oldFile exists()){
fin = new FileInputStream(oldFile)
fout = new FileOutputStream(newPath)
byte[] buffer = new byte[ ]
while( (byteread = fin read(buffer)) != ){
logger debug( byteread== +byteread)
fout write(buffer byteread)
}
if(fin != null){
fin close()//如果流不关闭 则删除不了旧文件
this delFile(oldFile)
}
}else{
throw new Exception( 需要转移的文件不存在! )
}
}catch(Exception e){
e printStackTrace()
throw e
}finally{
if(fin != null){
fin close()
}
}
}
/**
* 删除文件 只支持删除文件 不支持删除目录
* @param file
* @throws Exception
*/
private void delFile(File file) throws Exception {
if(!file exists()) {
throw new Exception( 文件 +file getName()+ 不存在 请确认! )
}
if(file isFile()){
if(file canWrite()){
file delete()
}else{
throw new Exception( 文件 +file getName()+ 只读 无法删除 请手动删除! )
}
}else{
throw new Exception( 文件 +file getName()+ 不是一个标准的文件 有可能为目录 请确认! )
}
lishixinzhi/Article/program/Java/hx/201311/25584
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)