使用JAVA将遍历的目录按照树形缩进的样子打印到控制台。代码如下:
import java.io.File;
public class FileName {
//遍历及产生缩进
//两个参数,文件路径或文件名,以当前目录为父目录统计目录的深度(即函数递归的次数)
public void putfilename(String filename, int count){
count++;
File file = new File(filename);
if(file.isFile()){
for(int k=0;k<count-1;k++){
System.out.print("| ");
}
System.out.println(file.getName());
} else if (file.isDirectory() && this.getPermission(file)){
File[] list = file.listFiles();
for(int i=0; i<list.length; i++){
if(list[i].isDirectory()){
for(int k = 0; k < count; k++){
System.out.print("| ");
}
System.out.println(list[i].getName());
}
//在这儿进行递归调用
putfilename(list[i].getPath(), count);
}
}
}
//判断是否有读取文件的权限
public boolean getPermission(File file){
boolean flag = false;
try {
File[] list = file.listFiles();
@SuppressWarnings("unused")
//此方法的关键点,看这句话是否产生异常(产生异常则不能访问,没有异常则正常访问)
int i = list.length;
flag = true;
} catch (Exception e) {
flag = false;
}
return flag;
}
//生成main方法调用
public static void main(String[] args) {
//指定要遍历的目录
String filename = "E:/";
FileName fn = new FileName();
fn.putfilename(filename, -1);
}
}
另外,还可以将遍历的目录名称树形缩进结构打印在,文本文件中,此处采用当前时间为文件名,代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileNameToFile {
static File test = null;
//遍历及产生缩进
public void putfilename(String filename, int count){
count++;
File file = new File(filename);
try {
if(file.isFile()){
FileWriter fw = new FileWriter(test,true);
BufferedWriter bw = new BufferedWriter(fw);
for(int k=0;k<count-1;k++){
bw.write("| ");
}
bw.write(file.getName());
bw.newLine();
fw.flush();
bw.close();
} else if (file.isDirectory() && this.getPermission(file)){
File[] list = file.listFiles();
for(int i=0; i<list.length; i++){
if(list[i].isDirectory()){
FileWriter fw = new FileWriter(test,true);
BufferedWriter bw = new BufferedWriter(fw);
for(int k = 0; k < count; k++){
bw.write("| ");
}
bw.write(list[i].getName());
bw.newLine();
fw.flush();
bw.close();
}
//在此处进行递归调用
putfilename(list[i].getPath(), count);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
//判断是否有读取文件的权限
public boolean getPermission(File file){
boolean flag = false;
try {
File[] list = file.listFiles();
@SuppressWarnings("unused")
//此方法的关键点,看这句话是否产生异常(产生异常则不能访问,没有异常则正常访问)
int i = list.length;
flag = true;
} catch (Exception e) {
flag = false;
}
return flag;
}
//生成main方法调用
public static void main(String[] args) {
//指定要遍历的目录
String filelocal = "G:/";
String filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) //将时间格式化为纯数字格式
+ ".txt";
test = new File(filename);
FileNameToFile fn = new FileNameToFile();//实例化
fn.putfilename(filelocal, -1);//调用本类方法
try {
//打开已经生成的文件
Runtime.getRuntime().exec("notepad " + filename);
} catch (IOException e) {
e.printStackTrace();
}
}
}