毕向东_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接口(标记接口) 非必须, 但强烈建议所有 ...
随机推荐
- 单独安装VS2012装mono for android
直接安装个SQL Server2012,然后就可以单独安装VS2012 来用mono for android了.如果不想装,那就装以下这些东西. 广州-PC286() 11:05:28 和 x86 ...
- BUG~JS
2017-11-06 1.没想到啊,这么久了,居然会有这种错误.canvas绘制图片,图片路径出错.drawImage() 解决方法:测试各参数,不单单是要打印出来,还要注意打印的参数是否为有效值
- Android中Handler的使用方法及实例(基础回顾)
Handler使用例1 这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会 ...
- linux下wc功能的简单实现
1.代码来源:自己编写 2.运行环境:linux终端 3.编程语言:c/c++语言 4.bug:未发现 5.当前功能:可以统计字符的字符数.行数.单词数 6.使用方法:wc -l 文件名-->统 ...
- I/O的整体介绍
java的i/o操作类在包java.io下,大概可以分成如下四组: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...
- 一头扎进 Java IO中-------java IO文件
Java IO: 文件 在Java应用程序中,文件是一种常用的数据源或者存储数据的媒介.所以这一小节将会对Java中文件的使用做一个简短的概述.这篇文章不会对每一个技术细节都做出解释,而是会针对文件存 ...
- UVM序列篇之二:sequence和item(上)
无论是自驾item,穿过sequencer交通站,通往终点driver,还是坐上sequence的大巴,一路沿途观光,最终跟随导游停靠到风景点driver,在介绍如何驾驶item和sequence,遵 ...
- ASP.NET站点部署相关
汤姆大叔的部署指南:http://www.cnblogs.com/TomXu/archive/2011/11/25/2263050.html 中文目录: 部署介绍 --(英文版连接) 部署SQL Se ...
- 运行Rails server时,出 Error:Address already in use错误
运行dev@ubuntu:~/qq$ rails server出错 [2013-07-30 16:29:23] WARN TCPServer Error: Address already in us ...
- XRP共识算法
目录 共识协议属性 账本历史 信任的验证 共识协议属性 XRP Ledger使用的共识协议不同于之前的任何区块链.该协议称为XRP Ledger共识协议,旨在具有以下重要属性: 使用XRP Ledge ...