工具/原料
一台配置了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盘寄存资料")//++++++++++++++++++++++
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)