黑马程序员技术交流社区

标题: 做有关流的练习时总遇到文件夹拒绝访问的异常 [打印本页]

作者: lll456123l    时间: 2016-5-5 19:13
标题: 做有关流的练习时总遇到文件夹拒绝访问的异常
本帖最后由 lll456123l 于 2016-5-5 19:51 编辑

计算指定路径下所有txt文件包括子文件夹里的.txt文件的个数然后将所有的.txt文件复制到D盘下任意目录;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class lianxi {
public static void main(String[] args) throws IOException {
      ylq();
}
        public static void ylq( ) throws IOException
        {
         File file=new File("E://源");
          InputStream in=new FileInputStream(file);
   
         File [] fil=file.listFiles();
         for(File files: fil)
         {
           OutputStream out=new FileOutputStream("D//"+files.getName());
          if(!files.exists())
           files.mkdir();
          if(files.isDirectory())
           ylq();
          else
          {int count=0;
           if(   files.getName().endsWith(".txt"))
            count++;   
           System.out.print("txt文件的个数为:"+count);
           
           byte [] brr=new byte[1024];
           int length;
           while((length=in.read(brr))!=-1)
           {
            out.write(brr, 0, brr.length);
           }
          }
          }
         }
        }

运行就会出异常  java.io.FileNotFoundException: E:\源 (拒绝访问。)


作者: ls20090726    时间: 2016-5-5 19:13
这才是递归拷贝文件的代码,自己看看
        public static void copy(File dir,File copyDir) throws IOException {
                File newFile = new File(copyDir,dir.getName());
                newFile.mkdirs();
                File[] subFiles = dir.listFiles();
               
                for(File subFile : subFiles) {
                       
                        if(subFile.isFile()) {
                                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
                                File newFiles = new File(newFile,subFile.getName());
                                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFiles));
                                int b;
                                while((b = bis.read()) != -1) {
                                        bos.write(b);
                                }
                                bis.close();
                                bos.close();
                        }else {
                                copy(subFile,newFile);
                        }
                }
               
        }
作者: lll456123l    时间: 2016-5-5 19:48
没人知道吗?在线等,急
作者: ls20090726    时间: 2016-5-5 19:54
InputStream in=new FileInputStream(file);
程序执行到这就抛出了你所说的异常,file代表的是一个文件夹对象,不能用IO流关联;
需要把它放到增强for循环里面;当他是一个txt文件时直接关联txt对象,即
InputStream in=new FileInputStream(files);
作者: lll456123l    时间: 2016-5-5 20:01
ls20090726 发表于 2016-5-5 19:54
InputStream in=new FileInputStream(file);
程序执行到这就抛出了你所说的异常,file代表的是一个文件夹 ...

改了之后还是有异常  java.io.FileNotFoundException: D\新建文件夹 (系统找不到指定的路径。)
作者: lll456123l    时间: 2016-5-5 21:06
ls20090726 发表于 2016-5-5 19:13
这才是递归拷贝文件的代码,自己看看
        public static void copy(File dir,File copyDir) throws IOExceptio ...

研究半天。。。。。终于懂了。。。。你面试了吗兄弟?
作者: ls20090726    时间: 2016-5-5 21:08
面试分数69,不知道能不能分配到名额,javaee先付费
作者: lll456123l    时间: 2016-5-5 21:13
ls20090726 发表于 2016-5-5 21:08
面试分数69,不知道能不能分配到名额,javaee先付费

面是不是一共50分么
作者: ls20090726    时间: 2016-5-5 21:17
入学测试30 + 面试50
作者: lll456123l    时间: 2016-5-5 21:21
ls20090726 发表于 2016-5-5 21:17
入学测试30 + 面试50

两个都是满分?,我入学测试29.。。明天面试。面试老师都会提什么问题啊
作者: wanli316644570    时间: 2016-5-5 21:25
求 基础班面试测试题  谢谢同学们
作者: ls20090726    时间: 2016-5-5 21:26
自我介绍,对黑马的第一印象,面向对象及其三大特征,集合,IO流,多线程
javaee还有mysql  , JDBC,HTTP协议,
再做2个编程题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2