java目录拷贝

虽然现在文件的拷贝都用 fileutils开源代码但今天也写写练手FileUtils.copyDirectoryToDirectory(srcDir, destDir);

@Test
	public void copy3() {
		 //FileUtils.copyDirectoryToDirectory(srcDir, destDir);
		 copy("d:\\a","d:\\b");
		 System.out.println("ok");
	}

/**
	 * 
	 * @param desrc
	 *            源目录
	 * @param src
	 *            目标目录
	 */
	public void copy(String desrc, String src) {
		File file = new File(desrc);
		if (!file.exists()) {
			System.out.println("目录不存在");
			return;
		}
		if (file.isDirectory()) {
			File descfile = new File(src);
			if(!descfile.exists()){
				descfile.mkdirs();
			}
			File[] dic = file.listFiles();
			if (dic != null && dic.length > 0) {
				for (File f : dic) {
					// 拷贝
					copy(f.getAbsolutePath(), src+File.separator+f.getName());
				}
			}
		} else {
			// 拷贝
			docopy(file, new File(src));
		}

	}

public void docopy(File file, File src) {	
		System.out.println(file.getName()+"===="+file.getAbsolutePath()+"<<<<<");
		FileInputStream fin = null;
		BufferedInputStream bin = null;
		FileOutputStream fou = null;
		BufferedOutputStream bou = null;
		byte[] b = new byte[1024];
		try {
			fin = new FileInputStream(file);
			bin = new BufferedInputStream(fin);
			fou = new FileOutputStream(src);
			bou = new BufferedOutputStream(fou);
			int i = 0;
			while ((i=bin.read(b)) != -1) {
				bou.write(b, 0, i);				
			}
			bou.flush();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fin.close();
				fou.close();
				fou.close();
				bou.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

 

你可能感兴趣的:(java)