需求:复制指定目录下的指定文件,并修改后缀名。
    指定的文件是:.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. eclipse:File->New没有Android Application Project的解决办法

    我的Eclipse版本是:Kepler Service Release 1,截图: 解决步骤: 1.单击Window,选择Customize Perspective,如图: 2.勾选Android A ...

  2. Play Framework框架 JPA惯用注解

    Play Framework框架 JPA常用注解 1.@Entity(name=”EntityName”) 必须 ,name 为可选 , 对应数据库中一的个表 2.@Table(name=”" ...

  3. Failed to upgrade AX 2012 R3 Retail channel database from CU9 to CU11 if SQL Server version was lower than 2012

    I tried to upgrade AX 2012 R3 Retail channel database from CU9 to CU11 for client. after generated n ...

  4. SharePoint 2013 列表多表联合查询

    在SharePoint的企业应用中,遇到复杂的逻辑的时候,我们会需要多表查询:SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,需要使用SPQuery的Joins ...

  5. 实践GTD三周年后的体会

    从2011年7月开始实践GTD到现在已经3年多了,按照年初设定的目标,应该写点GTD的体会,但提起笔来的时候却发现并没有什么太新的体会,大部分体会都已经在以前的文章中写到了,甚至有些流程已经简化了,看 ...

  6. Orchard扩展 自定义后台管理导航菜单 Admin Menu

    金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉. 金天:看源码永远是Coder学习的最快捷路径.     看本文需要对Orchard大致体系, 特别是Mo ...

  7. [QualityCenter]设置工作流脚本-新建缺陷时字段自动生成

    需求:新建缺陷时,自动生成缺陷状态.检查者和检查日期的值. 在脚本编辑器找到Defects_Bug_New函数,然后填写以下代码: Sub Defects_Bug_New    On Error Re ...

  8. sgu 104 Little shop of flowers 解题报告及测试数据

    104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的 ...

  9. Effective Java 34 Emulate extensible enums with interfaces

    Advantage Disadvantage Enum types Clarity Safety Ease of maintenance. None extensibility Typesafe en ...

  10. Effective Java 57 Use exceptions only for exceptional conditions

    Principle Exceptions are, as their name implies, to be used only for exceptional conditions; they sh ...