Java怎么实现文件拷贝

Java怎么实现文件拷贝,第1张

工具/原料

一台配置了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

test.copy("G:\\G盘寄存资料\\我的文档1\\音乐课堂.doc","G:\\G盘寄存资料")

请注意上面的有个文件夹名字叫“G盘寄存资料”,你复制的文件后的新文件名也叫“G盘寄存资料”,这样名字重复了,所以就出错了。

可以把程序改成这样的话就行了:

import java.io.BufferedInputStream

import java.io.BufferedOutputStream

import java.io.File

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.io.IOException

import java.io.InputStream

import java.io.OutputStream

public class FileCopy {

public void copy(String src, String dest){//**********

InputStream is=null

OutputStream os=null

char ch[]=src.toCharArray()

//************新添加的代码**********

int pos=0

for(int i=ch.length-1i>=0i--)

{

if(ch[i]=='\\')

{

if(i>pos)

pos=i

}

}

String temp=src.substring(pos)

dest=dest+temp

System.out.println("dest="+dest)

//****************************************

try {

is=new BufferedInputStream(new FileInputStream(src))

os=new BufferedOutputStream(new FileOutputStream(dest))

byte[] b=new byte[256]

int len=0

String str=null

StringBuilder sb=new StringBuilder()

try {

while((len=is.read(b))!=-1){

os.write(b,0,len)

}

os.flush()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}finally{

if(is!=null){

try {

is.close()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

} catch (FileNotFoundException e) {

e.printStackTrace()

}finally{

if(os!=null){

try {

os.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

}

public static void main(String[] args) {

FileCopy test=new FileCopy()

test.copy("G:\\G盘寄存资料\\我的文档1\\hello.txt","G:\\G盘寄存资料")//++++++++++++++++++++++

}

}

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\x0a\x0d\x0apublic class CopyMove {\x0d\x0a\x0d\x0a /**\x0d\x0a * @param args\x0d\x0a */\x0d\x0a public static void main(String[] args) {\x0d\x0a // TODO Auto-generated method stub\x0d\x0a CopyMove cm = new CopyMove()\x0d\x0a cm.copy("h:\\1.txt", "c:\\2.txt")\x0d\x0a cm.move("h:\\3.txt", "h:\\r\\e\\4.txt")\x0d\x0a }\x0d\x0a //文件复制前必须得到当前文件夹名字且要有\\x0d\x0a //当复制深层次路径时要用mkdirs方法\x0d\x0a public void copy(String path1,String path2){\x0d\x0a try {\x0d\x0a FileInputStream fis = new FileInputStream(path1)\x0d\x0a int l = fis.available()\x0d\x0a byte[] c = new byte[l]\x0d\x0a fis.read(c)\x0d\x0a fis.close()\x0d\x0a int i = path2.lastIndexOf("\\")+1\x0d\x0a System.out.println(i)\x0d\x0a String path = path2.substring(0, i)\x0d\x0a System.out.println(path)\x0d\x0a File f = new File(path)\x0d\x0a f.mkdirs()\x0d\x0a// System.out.println(f.getAbsolutePath())\x0d\x0a// System.out.println(f.isDirectory())\x0d\x0a FileOutputStream fos = new FileOutputStream(path2)\x0d\x0a fos.write(c)\x0d\x0a fos.close()\x0d\x0a System.out.println("文件复制成功")\x0d\x0a } catch (FileNotFoundException e) {\x0d\x0a // TODO Auto-generated catch block\x0d\x0a System.out.println("文件复制失败")\x0d\x0a } catch (IOException e) {\x0d\x0a // TODO Auto-generated catch block\x0d\x0a e.printStackTrace()\x0d\x0a }\x0d\x0a }\x0d\x0a \x0d\x0a public void move(String path1,String path2){\x0d\x0a try {\x0d\x0a FileInputStream fis = new FileInputStream(path1)\x0d\x0a int l = fis.available()\x0d\x0a byte[] c = new byte[l]\x0d\x0a fis.read(c)\x0d\x0a fis.close()\x0d\x0a int i = path2.lastIndexOf("\\")\x0d\x0a //System.out.println(i)\x0d\x0a String path = path2.substring(0, i)\x0d\x0a System.out.println(path)\x0d\x0a File f = new File(path)\x0d\x0a f.mkdirs()\x0d\x0a// System.out.println(f.getAbsolutePath())\x0d\x0a// System.out.println(f.isDirectory())\x0d\x0a FileOutputStream fos = new FileOutputStream(path2)\x0d\x0a fos.write(c)\x0d\x0a fos.close()\x0d\x0a System.out.println("文件移动成功")\x0d\x0a File f2 = new File(path1)\x0d\x0a f2.delete()\x0d\x0a } catch (FileNotFoundException e) {\x0d\x0a // TODO Auto-generated catch block\x0d\x0a System.out.println("文件移动失败")\x0d\x0a } catch (IOException e) {\x0d\x0a // TODO Auto-generated catch block\x0d\x0a e.printStackTrace()\x0d\x0a }\x0d\x0a }\x0d\x0a\x0d\x0a}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11553171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存