⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filecopy.java

📁 JAVA 入门小程序
💻 JAVA
字号:
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("错误,源文件:"+args[0]+"不存在");
			System.exit(-1);	
		}
		//判断源文件是否是目录
		if(src.isDirectory())
		{
			if(!dest.isDirectory())
			{
				System.out.println("错误:目的文件非目录");
				System.exit(-1);
			}
			else
			{
				
				
				try
				{
					copyDirectory(src,dest);
				}
				catch(Exception e)
				{
					System.out.println("复制错误");
				}
			}
		}
		else
		{
			//判断目的文件是否是目录
			if(dest.isDirectory())
			{
				try
				{
					copyFileToDirectory(src,dest);
				}
				catch(Exception e)
				{
					System.out.println("复制错误");
					e.printStackTrace();
				}
				
			}
			else
			{
				try
				{
					copy(src,dest);
				}
				catch(Exception e)
				{
					System.out.println("复制错误");
				}
			}
			
		}
		
		
		
	}
	//从文件到目录
	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("目的文件已经存在,是否覆盖(Y/N)");
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String s  = br.readLine();
			if(!s.equals("Y"))
			{
					dest = new File(dest.getParent(),"复件"+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("目的文件夹已经存在,是否覆盖(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()+"错误");
					System.exit(-1);
				}
								
				dest = new File(dest,src.getName());			
			}
			else
			{
				dest = new File(dest,"复件"+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();	
	
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -