需求:复制指定目录下的指定文件,并修改后缀名。
    指定的文件是:.java文件。
    指定的后缀名是:.jad
   数据源所在文件夹:C:\Users\Administrator\Desktop\记录
   目的地所在文件夹:C:\Users\Administrator\Desktop\新建文件夹\copy

分析:
  A:封装数据源的目录    B:封装目的地的目录
      判断路径下的文件是否是文件夹
        是:在目的文件夹下创建该文件,
          获取数据源所在文件夹的所有文件的File数组
          遍历File数组,得到每个文件的File对象

        不是:再对其后缀进行判断是否是.java

            是:进行改名并复制

            不是:无视

代码:

1、首先写main方法:

     public static void main(String[] args) throws IOException {
//封装目录
File start = new File("C:\\Users\\Administrator\\Desktop\\记录");
File end = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\copy"); //如果目的地文件夹不存在,则创建
if(!end.exists()){
end.mkdir();
} //复制文件夹
copyFolder(start,end);
}

2、判断是否是文件夹,并对文件夹进行复制的方法

     private static void copyFolder(File start, File end) throws IOException {
// 由于start是文件夹,所以开始不必获取File数组,直接进行判断
if(start.isDirectory()){
//是文件夹 //首先在目的文件夹下创建不同路径,同样名称的文件夹
File newFolder = new File(end,start.getName());
newFolder.mkdir(); //获取该文件夹下的所有文件或文件夹的File数组
File[] f = start.listFiles();
for(File file : f){
//再重新执行判断是否是文件夹
copyFolder(file,newFolder);
} }else{
//是文件
//判断是否是.java后缀的,是的话就改名,不是则丢掉
String name = start.getName();
if(name.endsWith(".java")){
String newname = name.replace(".java", ".jad");
File newfile = new File(end,newname); //进行复制
copyfile(start,newfile);
}

3、判断文件后缀是否是.java,并对它的数据进行复制

     private static void copyfile(File start, File newfile) throws IOException {
//因为任意格式的,所以用缓冲字节流
BufferedInputStream bi = new BufferedInputStream(new FileInputStream(start));
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(newfile)); //获取数据
byte[] by = new byte[1024];
int len = 0;
while((len = bi.read(by)) != -1){
bo.write(by,0,len);
}
bi.close();
bo.close();
}

IO流的练习3 —— 复制多级文件夹下的指定文件并改名的更多相关文章

  1. [置顶] LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 declare @sql varchar(4000), @dirpath varch ...

  2. java拷贝指定文件夹下的指定文件类型

    例如:把C:\Windows\SysWOW64下的所有dll文件拷贝到C:\Users\Administrator\Desktop\64dll这个目录 package com.xiaostudy.co ...

  3. Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  4. 用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

    每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了 ...

  5. C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名

    1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...

  6. Android开发系列(十七):读取assets文件夹下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...

  7. Java遍历一个文件夹下的全部文件

    Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...

  8. GreenDao 数据库:使用Raw文件夹下的数据库文件以及数据库升级

    一.使用Raw文件夹下的数据库文件 在使用GreenDao框架时,数据库和数据表都是根据生成的框架代码来自动创建的,从生成的DaoMaster中的OpenHelper类可以看出: public sta ...

  9. 递归输出文件夹下的所有文件的名称(转自 MSDN)

    问题:如何输出给定文件夹目录下面的所有文件的名称? C#代码: using System; using System.IO; namespace MyTest { public class Progr ...

随机推荐

  1. JavaScript基础10——node对象

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. VS 2013打开.edmx文件时报类型转换异常

      供应商提交了项目代码,但在我的电脑上打开项目编译时一直报Entityframework 的 .edmx文件转换异常,而无法通过编译.   分析后认为可能是entityframework的类库不够新 ...

  3. 用二进制大对象类型Blob实现图片入库与出库的操作

    package readclobDemo.bao; import java.io.FileInputStream; import java.io.FileNotFoundException; impo ...

  4. 优于CoreData的Realm数据库基础教程

    Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...

  5. Service的生命周期&Service绑定方法

    服务的生命周期: 一.采用start的方式开启服务 生命周期如下: 开启服务: onCreate()--> onStartCommand() (onStart()过时了)---> onDe ...

  6. CoreAnimation-01-CALayer核心要点及实例解析

    CALayer基础 CALayer是每一个UI控件的核心,一个UI控件之所以能显示可以说是CALayer的功劳 每一个UI控件默认都为自己创建一个CALayer对象,通过drawRect方法将内容绘制 ...

  7. Swift Standard Library: Documented and undocumented built-in functions in the Swift standard library – the complete list with all 74 functions

    Swift has 74 built-in functions but only seven of them are documented in the Swift book (“The Swift ...

  8. 由一个activity跳转到另一个activity

    定义一个按钮,当点击的时候跳转到另一个activity的界面 1.新建第二个activity 2.在第二个Java源码处继承第一个activity,导入 3.在source中复写Oncreat方法 4 ...

  9. ReSharper 卸载后 VS2012 没有提示问题

    虽然ReSharper非常强大,但由于公司电脑配置太差,被迫卸载了.但发现卸载后,VS2012自带的提示都没有了. 网上找了下相关的解决方法.摘抄下来,作为自己笔记. 解决方法原文出处:http:// ...

  10. 使用hibernate时出现 org.hibernate.HibernateException: Unable to get the default Bean Validation factory

    hibernate 在使用junit测试报错: org.hibernate.HibernateException: Unable to get the default Bean Validation ...