利用JAVA语言编写一个 名为copy的程序 实现文件的拷贝功能,应该怎样做?

Python012

利用JAVA语言编写一个 名为copy的程序 实现文件的拷贝功能,应该怎样做?,第1张

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}

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}

/**

*

复制单个文件

*

@param

oldPath

String

原文件路径

如:c:/fqf.txt

*

@param

newPath

String

复制后路径

如:f:/fqf.txt

*

@return

boolean

*/

public

void

copyFile(String

oldPath,

String

newPath)

{

try

{

int

bytesum

=

0

int

byteread

=

0

File

oldfile

=

new

File(oldPath)

if

(oldfile.exists())

{

//文件存在时

InputStream

inStream

=

new

FileInputStream(oldPath)

//读入原文件

FileOutputStream

fs

=

new

FileOutputStream(newPath)

byte[]

buffer

=

new

byte[1444]

int

length

while

(

(byteread

=

inStream.read(buffer))

!=

-1)

{

bytesum

+=

byteread

//字节数

文件大小

System.out.println(bytesum)

fs.write(buffer,

0,

byteread)

}

inStream.close()

}

}

catch

(Exception

e)

{

System.out.println("复制单个文件操作出错")

e.printStackTrace()

}

}

/**

*

复制整个文件夹内容

*

@param

oldPath

String

原文件路径

如:c:/fqf

*

@param

newPath

String

复制后路径

如:f:/fqf/ff

*

@return

boolean

*/

public

void

copyFolder(String

oldPath,

String

newPath)

{

try

{

(new

File(newPath)).mkdirs()

//如果文件夹不存在

则建立新文件夹

File

a=new

File(oldPath)

String[]

file=a.list()

File

temp=null

for

(int

i

=

0

i

<

file.length

i++)

{

if(oldPath.endsWith(File.separator)){

temp=new

File(oldPath+file[i])

}

else{

temp=new

File(oldPath+File.separator+file[i])

}

if(temp.isFile()){

FileInputStream

input

=

new

FileInputStream(temp)

FileOutputStream

output

=

new

FileOutputStream(newPath

+

"/"

+

(temp.getName()).toString())

byte[]

b

=

new

byte[1024

*

5]

int

len

while

(

(len

=

input.read(b))

!=

-1)

{

output.write(b,

0,

len)

}

output.flush()

output.close()

input.close()

}

if(temp.isDirectory()){//如果是子文件夹

copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i])

}

}

}

catch

(Exception

e)

{

System.out.println("复制整个文件夹内容操作出错")

e.printStackTrace()

}

}