JAVA初学IO流练习
获取E盘目录下的所有文件和文件夹并写到一个txt文档中
标记一下,以后会再回过头看的。
直接上代码:
package allfiles;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Objects;
/**
* @author Dai
*/
public class Demo {
private static int count;
private static int fileSum;
private static int refuseFileSum;
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis();
File file = new File("E:\\");
FileWriter fileWrite = new FileWriter("E:\\test\\fileWrite.txt");
printFile(file, fileWrite);
fileWrite.write("总文件数:\r\t\r\t" + fileSum + "\r\n");
fileWrite.write("被拒绝访问的总文件数:\r\t" + refuseFileSum + "\r\n");
fileWrite.write("总递归次数:\r\t\r\t" + count + "\r\n");
long end = System.currentTimeMillis();
String time = timeFormat(end - start);
System.out.println("start = " + start);
System.out.println("end = " + end);
fileWrite.write("消耗总时间\r\t\r\t" + time + "ms");
fileWrite.close();
}
private static String timeFormat(long time) {
int minute = (int) time / 1000 / 60;
int second = (int) time % 60;
return minute + "分" + second + "秒";
}
private static void printFile(File file, FileWriter fw) throws IOException {
for (File listFile : Objects.requireNonNull(file.listFiles())) {
fw.write(listFile.toString() + "\r\n");
fileSum++;
if (listFile.isDirectory()) {
try {
printFile(listFile, fw);
count++;
} catch (Exception e) {
fw.write("------------REFUSE FILE------------\r\n");
fw.write(listFile.toString() + "\r\n");
fw.write("------------REFUSE FILE------------\r\n\r\n");
refuseFileSum++;
}
}
}
}
}
遇到的问题
- 输出的时间不是很准确,待解决。
- 代码过于繁琐,待简化。