学java IO流的时候,跟着视频写了下面这段代码
import java.io.*;
public class ByteStreamDemo1 {
public static void main(String[] args) throws IOException {
//1.创建对象表示数据源
File src = new File("E:\\test");
//2.创建对象目的数据
File dest = new File("E:\\hello");
//3.调用拷贝函数
copydir (src, dest);
}
private static void copydir(File src, File dest) throws IOException {
dest.mkdirs();
//1、进入数据源
File[] files = src.listFiles();
//2、遍历数组
for (File file : files) {
//3、判断为文件-拷贝
if (file.isFile()) {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(dest, file.getName()));
byte[] bytes = new byte[1024];
int len;
while((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
}
fos.close();
fis.close();
} else{
// 4、判断为文件夹-递归
copydir(file, new File(dest, file.getName()));
}
}
}
但是写的时候应该最后那个递归忘写else了,导致在我的E盘建了一个名为hello的很多层嵌套的文件夹,具体有多少层呢,我只能说有很多,我曾用c++打了一千个路径
void test() {
for (int i = 1; i <= 1000; ++i) {
cout << "\\\\hello";
}
}
复制到E盘路径,仍然没有到达最底层那个文件
后来我试图魔法打败魔法,写了一段代码试图递归删除它,一运行给我报下面的错误
java.io.IOException: Cannot access file with path exceeding 32000 characters
意思是:无法访问路径超过 32000 个字符的文件
我tm直接心态崩了
总结一下我尝试过的所有删除方法,有些是网上找的建议:
1、直接右键删除
报错如下
点重试会卡退
2、用火绒粉碎,普通粉碎告诉我粉碎失败,勾选那个彻底粉碎结果粉碎了一下午也没粉完
3、用Visual Studio以及用IDEA打开,试图在软件里删除,结果都卡退了
4、用一些博客里说的用命令窗口用命令删除,结果也没用
5、秉持着重启解决一切的心态,正好赶上系统又更新,我就更新并重启了,结果不出所料,依然没有卵用
xdm我已经快放弃了,是不是只能接受我室友的建议格式化E盘了,虽然这个嵌套文件夹里面什么都没有,但是我与它战斗了大半天,心里已经腻死了,很想解决它,希望各位出出主意