----------------------
android培训、
java培训、期待与您交流! ----------------------
----------------------
android培训、
java培训、期待与您交流! ----------------------
详细请查看: http://edu.csdn.net/heima
IO流—拷贝文件夹—实例
package com.darkhorse.admissiontest;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
/
*
*复制一个文件夹,包括文件夹内的所有内容
*
* 思路:
* 1,定义控制台中输入,要被复制的文件夹路径,并判断文件夹是否存在;如果文件夹不存在用do while循环重新输入文件夹路径
* 2,再在控制台上输入新复制的文件夹路径,同时也判断文件夹是否存在,如果不存在则创建一个文件夹。
* 3,复制文件
* */
* 思路:
* 1,定义控制台中输入,要被复制的文件夹路径,并判断文件夹是否存在;如果文件夹不存在用do while循环重新输入文件夹路径
* 2,再在控制台上输入新复制的文件夹路径,同时也判断文件夹是否存在,如果不存在则创建一个文件夹。
* 3,复制文件
* */
public class CopyFolder {
public static void main(String[] args){
copyFolder();
}
/* 复制文件夹 */
public static void copyFolder(){
Scanner scan = null; // 定义一个空的文本扫描器
File file = null; // 定义一个空的文件路径名
System.out.println("请输入要复制的文件夹路径," + "如:D:copy\\copy");
/* 在控制台中输入文件夹路径,并判断输入的路径是否存在,如不存在就重新输入路径 */
do {
scan = new Scanner(System.in); // 读取Systm.in输入的字符串
file = new File(scan.nextLine()); // 把scan读取的字符串代入File中,就能得到相对路径
if (file.exists() == false) // exitsts()为判断file路径是否等于false
System.out.println("你输入的路径不存在:请重新输入"); // 如等于false,则请示输入路径错误要重新输入
} while (file.exists() != true);
System.out.println("请输入要复制到的位置的路径:如:D:copy\\copy");
String s = scan.nextLine();
File fileS = new File(s);
copyDirectory(file, fileS);
}
/* 复制目录 */
static void copyDirectory(File file, File fileS){
/* 判断file此路径是文件还是目录,如果是返回true,否则返回false */
if (file.isDirectory()) {
/* 判断新目录是否存在,如果不存在则创建一个 */
if (!fileS.exists()) { // exists():判断此文件或者目录是否存在,如果存在返回true;否则返回
// false
// fileS.mkdir(); // mkdir():创建此抽象路径文件目录
fileS.mkdirs(); //mkdirs():创建此抽象路径文件目录,包括不存在的父目录
}
// list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] children = file.list();
for (int i = 0; i < children.length; i++) {
copyDirectory(new File(file, children[i]), new File(fileS,
children[i]));
}
} else {
// 把file与fileS路径代入copyFile()方法中,开始复制文件
copyFile(file, fileS);
}
}
/* 复制文件,file路径为被复制路径,fileS路径为被复制到的路径 */
static void copyFile(File file, File fileS) {
//创建两个空的输入、输出流
BufferedInputStream bufIn = null;
BufferedOutputStream bufOut = null;
try {
//把文件路径传入给输入、输出流中
bufIn = new BufferedInputStream(new FileInputStream(file));
bufOut = new BufferedOutputStream(new FileOutputStream(fileS));
byte[] b = new byte[4 * 1024]; // 创建一个数组,数组长度为4K
int len; //定义一个整数类型len.
// 使用while循环语句,用read方法读取缓冲区输入流的数据,用write方法将数据写入数组b中。
while ((len = bufIn.read(b)) > 0) {
bufOut.write(b, 0, len);
}
} catch (IOException e) {
throw new RuntimeException("复制文件失败");
} finally {
try {
bufIn.close();
} catch (Exception e) {
throw new RuntimeException("bufIn输出流关闭失败");
}try {
bufOut.close();
} catch (Exception e2) {
throw new RuntimeException("bufOutj输入流关闭失败");
}
}
}
}
详细请查看: http://edu.csdn.net/heima