第20天-07-IO流(递归)

package bxd;

import java.io.File;

public class FileDemo3 {

    // 非递归打印
public static void showDir_1(File dir) { File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file);
}
} // 递归打印
public static void showDir_2(File dir) { File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file);
if (file.isDirectory())
showDir_2(file);
}
} // 逻辑更清晰的递归打印
public static void showDir_3(File dir) { System.out.println(dir); for (File file : dir.listFiles()) {
if (file.isDirectory()) {
showDir_3(file);
} else {
System.out.println(file);
}
}
} // 错误的递归, 相当于无限循环
public static void method() {
method();
} public static void toBin(int number, StringBuilder sb) {
if (number > 0) {
toBin(number / 2, sb);
sb.append(number % 2);
}
} public static int getSum(int number) {
if (number == 1) {
return 1;
}
return number + getSum(number - 1);
} public static void main(String[] args) { showDir_3(new File("D:/BaiduYunDownload/毕向东_Java基础视频教程")); StringBuilder stringBuilder = new StringBuilder();
toBin(6, stringBuilder);
System.out.println(stringBuilder); System.out.println(getSum(100));
}
}

第20天-08-IO流(带层次)

package bxd;

import java.io.File;

public class FileDemo4 {

    public static String getPrefix(int level) {
StringBuilder sb = new StringBuilder("|--");
for (int x = 1; x < level; x++) {
sb.insert(0, "| ");
}
return sb.toString();
} public static void showDir(File dir, int level) { level++;
for (File file : dir.listFiles()) {
System.out.println(getPrefix(level) + file);
if (file.isDirectory())
showDir(file, level);
}
} public static void main(String[] args) {
showDir(new File("D:/BaiduYunDownload/毕向东_Java基础视频教程"), 0);
}
}

第20天-09-IO流(删除带内容的目录)

package bxd;

import java.io.File;

/*
原理: 在Windows中删除目录需要从里往外删除. 删除过程可以用到递归.
*/
public class FileDemo5 {
public static void main(String[] args) {
removeDir(new File("D:/PS4 - Copy"));
} public static void removeDir(File dir) {
File[] files = dir.listFiles(); for (File file : files) {
if (file.isDirectory()) {
removeDir(file);
} else {
System.out.println(file.toString() + " -- " + file.delete());
}
}
System.out.println(dir + " --dir-- " + dir.delete());
}
}

第20天-10-IO流(创建.java文件列表)

package bxd;

/*
输出一个.java文件的扫描结果, 思路:
1. 对指定的目录进行递归
2. 获取递归过程中所有的.java文件
3. 将这些路径存储到集合中
4. 将集合中的数据写入到一个文件中
*/ import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; public class FileDemo6 {
public static void main(String[] args) throws IOException { File dir = new File("C:/Users/Eric/IdeaProjects/tomcat-jsp/");
List<File> list = new ArrayList<>(); fileToList(dir, list);
writeToFile(list, new File("list.txt"));
} public static void fileToList(File dir, List<File> list) {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
fileToList(file, list);
} else {
if (file.getName().endsWith(".java"))
list.add(file);
}
}
} public static void writeToFile(List<File> list, File file) throws IOException {
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file));
for (File f : list) {
bufw.write(f.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
} catch (IOException e) {
throw e;
} finally {
if (bufw != null) bufw.close();
}
}
}

毕向东_Java基础视频教程第20天_IO流(7~10)的更多相关文章

  1. 毕向东_Java基础视频教程第20天_IO流(15~17)

    第20天-15-IO流(打印输出流) 打印输出流:PrintWriter与PrintStream 两者的区别:Since JDK 1.4 it's possible to specify the ch ...

  2. 毕向东_Java基础视频教程第20天_IO流(11~14)

    第20天-11-IO流(Properties简述) .properties是一种主要在Java相关技术中用来存储应用程序的可配置参数的文件的文件扩展名.它们也可以存储用于国际化和本地化的字符串,这种文 ...

  3. 毕向东_Java基础视频教程第20天_IO流(5~6)

    第20天-05-IO流(文件列表一) static File[] listRoots() List the available filesystem roots. String[] list() Re ...

  4. 毕向东_Java基础视频教程第20天_IO流(1~4)

    第20天-01-IO流(File概述) File类: 用来将文件或者文件夹封装成对象, 方便进行操作. File对象可以作为参数, 传递给流对象的构造函数. 流对象不能操作文件夹; 流对象不能操作文件 ...

  5. 毕向东_Java基础视频教程第19天_IO流(20~22)

    第19天-20-IO流(改变标准输入输出设备) static void setIn(InputStream in) Reassigns the "standard" input s ...

  6. 毕向东_Java基础视频教程第19天_IO流(01~05)

    第19天-01-IO流(BufferedWriter) 字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应类缓冲区要结合流才可以使用. BufferedWriter BufferedReade ...

  7. 毕向东_Java基础视频教程第19天_IO流(06~10)

    第19天-06-IO流(装饰设计模式) 装饰设计模式: 当想要对已有的对象进行功能增强时, 可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么这个自定义的类称为装饰类. 装饰类通常会通过 ...

  8. 毕向东_Java基础视频教程第19天_IO流(11~14)

    第19天-11-IO流(字节流File读写操作) import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...

  9. 毕向东_Java基础视频教程第21天_IO流(1)

    第21天-01-IO流(对象的序列化) ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable接口(标记接口) 非必须, 但强烈建议所有 ...

随机推荐

  1. @using (Html.BeginForm())和@{Html.BeginForm();}@{Html.EndForm();}对比

    这样写报错 <body>    @using (Html.BeginForm())    {         form主体1    }    @{Html.BeginForm();}    ...

  2. MySQL error2003错误原因以及解决方案

    转自:http://hi.baidu.com/tianxia339/item/8e8849111461ea7e7a5f2540 出现ERROR 2003 (HY000): Can't connect ...

  3. Linux下SSH工具 PAC Manager的安装

    PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...

  4. 话说C语言的关键字volatile

    最近搞NVMe驱动需求分析,对volatile这个单词实在是再熟悉不过了. 而在C语言中,有一个关键字就叫做volatile, 其字面意思是"挥发性的, 不稳定的,可改变的". 那 ...

  5. php方法重载

    php方法重载   <?php/* * php面向对象的重写与重载重写:就是当子类继承父类的一些方法后,子类又在其内部定义了相同的方法,则这个新定义的方法会覆盖继承而来的父类的方法,子类只能调用 ...

  6. [转]Repeat Page Header on each Page for reports SSRS

    本文转自:https://stackoverflow.com/questions/3475144/i-want-to-repeat-page-header-on-each-page-for-repor ...

  7. 远程连接MongoDB数据库

    不使用用户名和密码 安装MongoDB后,默认不使用用户名和密码即可在本地登录,如需远程登录,只要修改/bin/mongo.conf文件即可

  8. android ConstraintLayout布局

    解析ConstraintLayout的性能优势 Android新特性介绍,ConstraintLayout完全解析 1.子控件的位置约束属性: layout_constraintRight_toLef ...

  9. 三、curator recipes之共享的可重入读写锁

    简介 curator实现了跨JVM的可重入读写互斥锁.它使用zookeeper去进行加锁,所以指定相同路径的处理线程将会基于“公平锁”的机制去竞争锁资源. 读写锁包含了读锁.写锁两个,它们的互斥关系如 ...

  10. C/C++:Windows cmd 指令

    一.快捷键1. Windows键 自从104键盘首次加入Windows键后,微软便一直计划为这个键添加更多功能,当然Win8也不例外. * Win+C:调出应用Charm菜单(Metro.传统桌面) ...