A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

8黑马币
本帖最后由 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:\源 (拒绝访问。)

最佳答案

查看完整内容

这才是递归拷贝文件的代码,自己看看 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,s ...

11 个回复

倒序浏览
这才是递归拷贝文件的代码,自己看看
        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);
                        }
                }
               
        }
回复 使用道具 举报
没人知道吗?在线等,急
回复 使用道具 举报
InputStream in=new FileInputStream(file);
程序执行到这就抛出了你所说的异常,file代表的是一个文件夹对象,不能用IO流关联;
需要把它放到增强for循环里面;当他是一个txt文件时直接关联txt对象,即
InputStream in=new FileInputStream(files);
回复 使用道具 举报
ls20090726 发表于 2016-5-5 19:54
InputStream in=new FileInputStream(file);
程序执行到这就抛出了你所说的异常,file代表的是一个文件夹 ...

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

研究半天。。。。。终于懂了。。。。你面试了吗兄弟?
回复 使用道具 举报
面试分数69,不知道能不能分配到名额,javaee先付费
回复 使用道具 举报
ls20090726 发表于 2016-5-5 21:08
面试分数69,不知道能不能分配到名额,javaee先付费

面是不是一共50分么
回复 使用道具 举报
入学测试30 + 面试50
回复 使用道具 举报
ls20090726 发表于 2016-5-5 21:17
入学测试30 + 面试50

两个都是满分?,我入学测试29.。。明天面试。面试老师都会提什么问题啊
回复 使用道具 举报
求 基础班面试测试题  谢谢同学们
回复 使用道具 举报
自我介绍,对黑马的第一印象,面向对象及其三大特征,集合,IO流,多线程
javaee还有mysql  , JDBC,HTTP协议,
再做2个编程题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马