?? filecopy.java
字號(hào):
import java.io.*;
public class FileCopy
{
public static void main(String args[])
{
if(args.length<2)
{
System.out.println("用法:java FileCopy src dest");
System.exit(-1);
}
File src = new File(args[0]);
File dest = new File(args[1]);
//判斷源文件是否存在
if(!src.exists())
{
System.out.println("錯(cuò)誤,源文件:"+args[0]+"不存在");
System.exit(-1);
}
//判斷源文件是否是目錄
if(src.isDirectory())
{
if(!dest.isDirectory())
{
System.out.println("錯(cuò)誤:目的文件非目錄");
System.exit(-1);
}
else
{
try
{
copyDirectory(src,dest);
}
catch(Exception e)
{
System.out.println("復(fù)制錯(cuò)誤");
}
}
}
else
{
//判斷目的文件是否是目錄
if(dest.isDirectory())
{
try
{
copyFileToDirectory(src,dest);
}
catch(Exception e)
{
System.out.println("復(fù)制錯(cuò)誤");
e.printStackTrace();
}
}
else
{
try
{
copy(src,dest);
}
catch(Exception e)
{
System.out.println("復(fù)制錯(cuò)誤");
}
}
}
}
//從文件到目錄
public static void copyFileToDirectory(File src,File dest) throws Exception
{
dest = new File(dest,src.getName());
copy(src,dest);
}
//從文件到文件
public static void copy(File src,File dest) throws Exception
{
if(dest.exists())
{
System.out.println("目的文件已經(jīng)存在,是否覆蓋(Y/N)");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
if(!s.equals("Y"))
{
dest = new File(dest.getParent(),"復(fù)件"+dest.getName());
}
}
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
int c;
while((c=fis.read())!=-1)
{
fos.write(c);
}
fis.close();
fos.close();
}
//從目錄到目錄
public static void copyDirectory(File src,File dest) throws Exception
{
File[] f1 = dest.listFiles();
int j=0;
for(j=0;j<f1.length;j++)
{
if(f1[j].isDirectory()&&f1[j].getName().equals(src.getName()))
{
break;
}
}
if(j<f1.length)
{
System.out.println("目的文件夾已經(jīng)存在,是否覆蓋(Y/N)");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
if(s.equals("Y"))
{
try
{
delete(f1[j]);
}
catch(Exception e)
{
System.out.println("刪除文件夾:"+f1[j].getAbsolutePath()+"錯(cuò)誤");
System.exit(-1);
}
dest = new File(dest,src.getName());
}
else
{
dest = new File(dest,"復(fù)件"+src.getName());
}
}
else
{
dest = new File(dest,src.getName());
}
if(dest.mkdir())
{
File[] f2 = src.listFiles();
for(int i=0;i<f2.length;i++)
{
if(f2[i].isDirectory())
{
copyDirectory(f2[i],dest);
}
else
{
copyFileToDirectory(f2[i],dest);
}
}
}
}
public static void delete(File f) throws Exception
{
if(f.isDirectory())
{
File[] l = f.listFiles();
for(int i=0;i<l.length;i++)
{
if(l[i].isDirectory())
{
delete(l[i]);
}
else
{
l[i].delete();
}
}
}
f.delete();
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -