将文件复制到另外一个目录下

  1. 单个文件复制

 

/**
 * 单个文件复制	
 * @param oldPath 原文件路径 比如D:\tmp\a\Test.java
 * @param newPath 复制后的路径 比如D:\tmp\b\Test.java
*/
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();
		}
	}
@Test
public void testcopy()
{
   this.copyFile("D:"+File.separator+"tmp"+File.separator+"a"+File.separator+"Test.java","D:"+File.separator+"tmp"+File.separator+"b"+File.separator+"Test.java");
}

 2.批量复制

 

	/**
	 * 批量复制	
	 * @param oldPath 原文件路径  比如D:\\tmp\\a
	 * @param newPath 复制后的路径 比如 D:\\tmp\\b\\cc
	 */
	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();
		}
	}
	
	@Test
	public void testcopy(){
		this.copyFolder("D:"+File.separator+"tmp"+File.separator+"a", "D:"+File.separator+ "tmp"+File.separator+"b" + File.separator+"测试文件夹");
	}

 注:File.separator在windows表示为\  linux表示为/ 在路径中用File.separator可以跨平台,避免程序在不同的操作系统上出现路径不识别的问题。

 

 

 

你可能感兴趣的:(java文件复制)