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

时间:2023-03-09 03:03:03
毕向东_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();
}
}
}