11 * */
12 public class Demo {
13 private static Scanner sc; 14
15 public static void main(String[] args) throws IOException { 16 sc = new Scanner(System.in);
17 System.out.println(\请输入一个源文件夹路径\18 String str_oldFile = sc.nextLine();
19 System.out.println(\请输入一个目的文件夹路径\20 String str_newFile = sc.nextLine(); 21 sc.close();
22 File oldFile = new File(str_oldFile); 23 File newFile = new File(str_newFile); 24 MyCopy(oldFile, newFile); 25 } 26
27 public static void MyCopy(File oldFile, File newFile) throws IOException { 28 if (!oldFile.exists()) // 判断源文件是不是存在,如果不存在,声明. 29 {
30 System.out.println(\文件不存在\31 }
32 // 新的目录,加上旧的文件名.就成了一个新的文件.但是此时还没有具体文件.
黑马程序员济南中心 编著
33 File f = new File(newFile.getPath() + \34 System.out.println(\
35 f.mkdir(); // 创建新的文件夹 &&&重要的一部分.这里是建立一个具体的文件夹,此时新旧文件夹36 相同了.
37 File[] files = oldFile.listFiles(); // 列出旧文件夹里的所有文件. 38 for (File file : files) // 遍历这个文件夹里面的文件.. 39 {
40 if (file.isDirectory()) // 如果还是文件夹,就递归. 41 {
42 MyCopy(file, f);
43 } else // 否则就可以,用IO流来读写文件了. 44 {
45 BufferedInputStream bis = new BufferedInputStream( 46 new FileInputStream(file));
47 BufferedOutputStream bos = new BufferedOutputStream( 48 new FileOutputStream(f.getPath() + \49 + file.getName())); 50 int b = 0;
51 while ((b = bis.read()) != -1) { 52 bos.write(b); 53 }
54 bis.close();
黑马程序员济南中心 编著
55 bos.close();
56 System.out.println(file.getName() + \拷贝完成!\57 } } } }
?
File类递归练习(按层级打印)
从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, [Java] 纯文本查看 复制代码 ? 01 /**
02 * 从键盘接受一个字符串,这个字符串是一个文件目录. 将该目录中所有的文件打印在控制台上. 03 * 思路: 1.从键盘录入,得到一个字符串, 04 * 2.通过该字符串,创建一个文件夹,
05 * 3.将该文件夹进行遍历,如果是一个文件夹,那么就进行递归, 否则,就将文件名称打印在控制台. 06 * 07 * */
08 public class Demo {
09 public static void main(String[] args) { 10 SystemInFileName();
黑马程序员济南中心 编著
11 } 12
13 public static void SystemInFileName() { 14 Scanner sc = new Scanner(System.in); 15 while (true) {
16 System.out.println(\输入文件夹路径,注意不能是盘符根目录\17 String str = sc.nextLine(); 18 File fi = new File(str);
19 if (!fi.exists() && !fi.isDirectory()) {
20 System.out.println(\请输入正确的路径文件夹路径\21 } else {
22 System.out.println(\路径:\23 ListFile(fi); 24 } 25 } 26 } 27
28 public static void ListFile(File fi) { 29
30 File[] ff = fi.listFiles(); 31 for (File f : ff) {
32 if (f.isDirectory()) {
黑马程序员济南中心 编著
33 System.out.println(\文件夹:\34 ListFile(f); 35 } else {
36 System.out.println(f.getName()); 37 } 38 } 39 } 40 }
?
递归练习(斐波那契数列)
[Java] 纯文本查看 复制代码 ? 01 /**
02 * 假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对03 一年内没有发生死亡
04 * , 问:一对刚出生的兔子,一年内繁殖成多少对兔子? 1 1 2 3 5 8 13 05 *
06 * @author Somnus 07 * 08 */
09 public class Demo {
黑马程序员济南中心 编著