private void action() {
			LinkedList<File> stack = new LinkedList<File>();
			stack.push(sourceFile);
			File[] files;
			int total = 0;
			int sourcePathNameLength = sourceFile.getAbsolutePath().length();
			String fileTail;
			File dest;
			while (!stack.isEmpty() && !isInterrupted) {
				files = stack.pop().listFiles();
				for (File src : files) {
					if (src.isDirectory()) {
						stack.push(src);
					} else {
						//ȥsourceFile·ĵַ
						fileTail = src.getAbsolutePath().substring(
								sourcePathNameLength + 1);
						dest = new File(toFile, fileTail);
						startCopy(src, dest);
						progressBar.setValue(++total);
					}
				}
			}
		}