文件复制器 FileCopy
完成一个程序,这个程序可以将指定文件中的内容复制到另一个文件中去。
设计要求:
1)在 FileCopy 类中,建立 copy 方法,实现文件复制的内容;
2)程序中需要考虑输入输出异常处理;
3)在 dos 控制台窗口环境下,通过命令行参数运行程序,如:
Java FileCopy test1.txt test2.txt
作者:方贵深
吉林大学珠海学院
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 {
/**
* @param args
*/
private static void copy(File file1,File file2)
{
BufferedInputStream inputStream=null;
BufferedOutputStream outputStream=null;
if(!file1.exists())
{
System.out.println("文件不存在");
return;
}
if(file1.toString().indexOf(".")==-1)
{
if(file2.toString().indexOf(".")==-1)
{
//源文件是文件夹
file2=new File(file2.toString()+file1.getName());
file2.mkdirs();
}
else
{
System.out.println("不能将文件夹复制到文件内");
//源文件是文件
}
}
else
{
if(file2.toString().indexOf(".")==-1)
{
//目标文件是文件夹,将file1的文件复制到文件夹内
file2.mkdirs();
file2=new File(file2.toString()+File.separator+file1.getName()); //将文件名添加到目标路径后
//创建相应的路径
//目标文件是文件
if(file2.exists())
else
System.out.println("目标文件已存在,复制失败");
file2.getParentFile().mkdirs();
}
else
{
}
try
{
inputStream=new BufferedInputStream(new FileInputStream(file1));
outputStream=new BufferedOutputStream(new FileOutputStream(file2));
try
{
int i=-1;
byte []b=new byte[1024];
while((i=inputStream.read(b))!=-1)
{
outputStream.write(b,0,i);
}
}
catch (Exception e2)
{
System.out.println(e2.getMessage());
//返回的是读取的字节数
}
finally
{
}
myStreamClose(inputStream, outputStream);
}
catch (FileNotFoundException e1)
{
System.out.println(e1.getMessage());
myStreamClose(inputStream, outputStream);
}
finally
{
}
}
try
}
private static void myStreamClose(InputStream inputStream,OutputStream outputStream)
{
inputStream.close();
outputStream.close();
}
catch(IOException ie)
{
{
}
System.out.println(ie.getMessage());
}
public static void main(String[] args) {
if(args.length!=2)
{
System.out.println("输入有误,请重新输入(从控制台输入)");
return;
}
File file1=new File(args[0]).getAbsoluteFile();
File file2=new File(args[1]).getAbsoluteFile();
copy(file1, file2);
// TODO Auto-generated method stub
}
}