- 输出指定目录下的子目录和子文件
java
import java.io.*;
import java.util.*;
//遍历文件夹中的java文件
public static void print(File file, int n) {
//n为缩进数,因为每行都比上一行多一个缩进,所以通过传递参数来达到,先构造出缩进
String s = "";
for (int i=0; i<n; i++)
s+="|--";
File[] arr = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File file, String name) {
return name.toLowerCase().endsWith(".java");
}
});
for (int i=0; i<arr.length; i++) {
File temp = arr[i];
if (temp.isDirectory()) {//是不是目录
print(temp,n+1);
}
}
return ;
}
}
public static void main(String[] args) throws IOException {
File f = new File("E:\\aaa");
System.out.println(f.getName());//f.getName()获取File的名字
print(f,1);
return ;
}
}
- 使用InputStream,OutputStream
使用后要调用close()方法,关闭流,释放资源。且要考虑到InputStream在读取时发生IO错误,也能正常关闭流,释放资源
* 最原始 但读取时若发生IO错误,不能关闭流*
public static void main(String[] args) throws IOException {
InputStream input=new FileInputSteam("E:\\aaa\\bili\\old.txt")
int n=-1;
StringBuilder sb = new StringBuilder("");
while ((n=input.read()) != -1 ) {
sb.append((char)n);
}
System.out.println(sb);
input.close();
return ;
}
* 方法1 推荐*
public static void main(String[] args) throws IOException {//文件不存在,没有写权限导致写失败等错误封装成IOException异常抛出
try (InputStream input=new FileInputSteam("E:\\aaa\\bili\\old.txt")) {
//编译器自动写入finally调用close()方法,因为InputStream和OutStream都实现了java.lang.AutoCloseable接口
int n=-1;
while ((n=input.read()) != -1) {
System.out.println((char)n);
}
}
return ;
}
* 方法2 *
InputStream input=null;
try {
input = new FileInputStream("E:\\aaa\\bili\\old.txt");
int n=-1;
while ((n=input.read()) != -1) {
System.out.println((char)n);
}
} finally {//保证InputStream在读取时发生IO错误,也能正常关闭流,释放资源
if (input != null) {input.close();}
}