IO流的练习3 复制多级文件夹下的指定文件并改名

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

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

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

            是:进行改名并复制

            不是:无视

代码:

1、首先写main方法:

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

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

 1     private static void copyFolder(File start, File end) throws IOException {
 2         // 由于start是文件夹,所以开始不必获取File数组,直接进行判断
 3         if(start.isDirectory()){
 4             //是文件夹
 5
 6             //首先在目的文件夹下创建不同路径,同样名称的文件夹
 7             File newFolder = new File(end,start.getName());
 8             newFolder.mkdir();
 9
10             //获取该文件夹下的所有文件或文件夹的File数组
11             File[] f = start.listFiles();
12             for(File file : f){
13                 //再重新执行判断是否是文件夹
14                 copyFolder(file,newFolder);
15             }
16
17         }else{
18             //是文件
19             //判断是否是.java后缀的,是的话就改名,不是则丢掉
20             String name = start.getName();
21             if(name.endsWith(".java")){
22                 String newname = name.replace(".java", ".jad");
23                 File newfile = new File(end,newname);
24
25                 //进行复制
26                 copyfile(start,newfile);
27             }

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

 1     private static void copyfile(File start, File newfile) throws IOException {
 2         //因为任意格式的,所以用缓冲字节流
 3         BufferedInputStream bi = new BufferedInputStream(new FileInputStream(start));
 4         BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(newfile));
 5
 6         //获取数据
 7         byte[] by = new byte[1024];
 8         int len = 0;
 9         while((len = bi.read(by)) != -1){
10             bo.write(by,0,len);
11         }
12         bi.close();
13         bo.close();
14     }
时间: 2024-10-14 14:44:18

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

用python查找在指定目录下特定文件夹下的指定文件

本代码是在python2.*上边所写. 功能:在指定目录下查找特定文件夹下的特定文件. 实例:查找在packages目录下文件夹名为values下的strings.xml文件 #!/usr/bin/env python import os def walk_dir(path): filter_file_name = 'strings.xml' for root, dirs, files in os.walk(path): for dir_item in dirs: if dir_item ==

搜索指定文件夹下的指定文件(只能用于一级目录)

#include <iostream> #include <io.h> #include <stdlib.h> //包含system()函数 #include <string> using namespace std; const char *to_search = "F:\\pro\\VC++ VFW\\*.cpp"; //欲查找的文件,支持通配符* int main() { long handle; //用于查找的句柄 string

java删除指定文件夹下的指定文件

import java.io.*; class delclass { public static void main(String[] args) { File file=new File("/Users"); // /Users是路径名 delete(file); } public static void delete(File f) { //数组指向文件夹中的文件和文件夹 File[] fi=f.listFiles(); //遍历文件和文件夹 for(File file:fi) {

Java File IO 练习题:把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.In

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

每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了一个小工具. 以下代码只实现了把多级文件夹下的所有文件复制到一个文件夹中,如果需要指定复制文件的格式,可以在1111处添加一个判断.如果需要同时删除原文件夹可以在添加一个递归删除的方法. package Bao; import java.io.BufferedInputStream;import j

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

1.实现把指定文件夹下的所有文件复制到指定路径下 1 public static void copyFiles(string path) { 2 DirectoryInfo dir = new DirectoryInfo(path); 3 if (!dir.Exists) 4 return; //获得指定文件夹内的所有的子目录信息 5 DirectoryInfo[] dirs = dir.GetDirectories(); //获得指定文件夹内所有的文件信息 6 FileInfo[] files

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

Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常使用的构造器有: 1.public File(String pathname){} 在pathname路径下创建文件对象 2.public File(String path,String name){} 在path參数指定的文件夹中创建具有给定名字的File对象.假设path为null,构造器将使用

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

在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中写的一个小游戏的一个问题.另外也能够读取Raw文件夹下的数据库文件) 这就造成了一个问题.这个问题事实上非常好解决,解决方法例如以下: 我们首先把有数据的数据库文件放在assets资源文件夹下边,然后在apk应用启动的时候,把assets文件夹下的数据库文件的数据写入到真机的内存中去. 下边開始我们

linux查找文件夹下的全部文件里是否含有某个字符串

查找文件夹下的全部文件里是否含有某个字符串 find .|xargs grep -ri "IBM" 查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称 find .|xargs grep -ri "IBM" -l 1.正則表達式 (1)正則表達式一般用来描写叙述文本模式的特殊使用方法,由普通字符(比如字符a-z)以及特殊字符(称为元字符.如/.*.?等)组成. (2)基本元字符集及其含义 ^ :仅仅匹配行首. 如^a 匹配以a开头的行abc,a2e,