问题遇到的现象和发生背景
Java io 流 之FileInputStream和FileOutputStream的文件夹内容传输,批量传输之拒绝访问
问题相关代码,请勿粘贴截图
FileInputStream in= new FileInputStream("D://img");
FileOutputStream out = new FileOutputStream("D://img2");
int c=-1;
while ((c=in.read())!=-1){
out.write(c);
out.flush();
}
in.close();
out.close();
}
运行结果及报错内容
"C:\Program Files\Java\jdk1.8.0_261\bin\java.exe" "-javaagent:D:\IDEA软件\IntelliJ IDEA 2021.1\lib\idea_rt.jar=57421:D:\IDEA软件\IntelliJ IDEA 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_261\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\rt.jar;E:\idae作业\10\java_base\out\production\java_base" cn.hp.io.Demo01
Exception in thread "main" java.io.FileNotFoundException: D:\img (拒绝访问。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.(FileInputStream.java:138)
at java.io.FileInputStream.(FileInputStream.java:93)
at cn.hp.io.Demo01.main(Demo01.java:8)
我的解答思路和尝试过的方法
io流可以批量输入和输出,用listfiles先将FileInputStream里边的每一个具体路径转换为字符串,然后用FileOutputStream调用这个具体路径就可以了
最后解决了问题
File file = new File("D://img");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
FileInputStream in= new FileInputStream(files[i]);
File file1 = new File("D://img2");
FileOutputStream out = new FileOutputStream(file1+"//"+files[i].getName());
int c=-1;
while ((c=in.read())!=-1){
out.write(c);
out.flush();
}
in.close();
out.close();
}