毕向东_Java基础视频教程第20天_IO流(7~10)
第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)的更多相关文章
- 毕向东_Java基础视频教程第20天_IO流(15~17)
第20天-15-IO流(打印输出流) 打印输出流:PrintWriter与PrintStream 两者的区别:Since JDK 1.4 it's possible to specify the ch ...
- 毕向东_Java基础视频教程第20天_IO流(11~14)
第20天-11-IO流(Properties简述) .properties是一种主要在Java相关技术中用来存储应用程序的可配置参数的文件的文件扩展名.它们也可以存储用于国际化和本地化的字符串,这种文 ...
- 毕向东_Java基础视频教程第20天_IO流(5~6)
第20天-05-IO流(文件列表一) static File[] listRoots() List the available filesystem roots. String[] list() Re ...
- 毕向东_Java基础视频教程第20天_IO流(1~4)
第20天-01-IO流(File概述) File类: 用来将文件或者文件夹封装成对象, 方便进行操作. File对象可以作为参数, 传递给流对象的构造函数. 流对象不能操作文件夹; 流对象不能操作文件 ...
- 毕向东_Java基础视频教程第19天_IO流(20~22)
第19天-20-IO流(改变标准输入输出设备) static void setIn(InputStream in) Reassigns the "standard" input s ...
- 毕向东_Java基础视频教程第19天_IO流(01~05)
第19天-01-IO流(BufferedWriter) 字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应类缓冲区要结合流才可以使用. BufferedWriter BufferedReade ...
- 毕向东_Java基础视频教程第19天_IO流(06~10)
第19天-06-IO流(装饰设计模式) 装饰设计模式: 当想要对已有的对象进行功能增强时, 可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么这个自定义的类称为装饰类. 装饰类通常会通过 ...
- 毕向东_Java基础视频教程第19天_IO流(11~14)
第19天-11-IO流(字节流File读写操作) import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...
- 毕向东_Java基础视频教程第21天_IO流(1)
第21天-01-IO流(对象的序列化) ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable接口(标记接口) 非必须, 但强烈建议所有 ...
随机推荐
- Openerp 修改 tree view 的列宽
在 tree 的后边添加自定义css 列:“my_class" 然后在对应的css文件中,添加样式: 保存,重新刷新页面即可.
- (转)DB2和 Oracle的并发控制(锁)比较
DB2和 Oracle的并发控制(锁)比较 牛 新庄2005 年 12 月 26 日发布 原文:https://www.ibm.com/developerworks/cn/data/library/t ...
- FS及CacheFS类解读
Javac中有FSInfo与CacheFSInfo两个类,CacheFSInfo继承了FSInfo类,这两个类的主要功能就是通过map缓存Jar文件,核心代码如下: private Map<Fi ...
- android Application类的详细介绍(转)
在代码中经常看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习. 一.先对它的整体概念解释: 在android源码中对他的描述是; * Base cl ...
- PHP之mb_strrpos使用
mb_strrpos (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_strrpos - Find position of last occurrence of a stri ...
- Nginx的upstream的5种分配方式
转自:Nginx的upstream目前支持5种分配方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight指定轮询几率,weigh ...
- Java设计模式-监听器模式
监听器模式有三个要素——事件源.事件对象.监听器. 事件源:顾名思义,事件发生的源头,比如点击的按钮,属于被监听的对象: 事件对象:这个经常和事件源混淆,它经常被用来包装事件源,切记,它毕竟是个事件, ...
- Python(2):创建函数模块
说明: 在使用python的时候我们除了使用内置的函数之外,可能还需要使用一些别人写的函数.或者我们写的代码也希望可以给其他人使用.要实现这样的功能,我们就需要按照下面的步骤来定义自己的模块: Ste ...
- Linux du查询文件大小
#查询磁盘当前容量信息 $df -h #查询当前目录下所有文件的大小 $du -m . #两种方式查询 仅当前目录下的子文件(文件夹)大小 $du -sh /cloud/* $du -h ...
- Html-完整表格
表头th 特殊的单元格:加粗.居中 它的用户是取代td的位置即可 <table border="2"> <tr> <th>姓名</th&g ...