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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 橘子果酱 中级黑马   /  2015-11-19 14:46  /  346 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.heima23;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.util.Scanner;
  10. /*
  11. * 键盘获取两个文件夹路径,将其中的一个文件夹中的.java文件改为.tat文件并拷贝到另一个文件夹中
  12. *
  13. * 创建目标文件夹,在目标文件夹中创建原文件夹名
  14. * 获取路径下的所有文件或文件夹 封装成 File数组
  15. * 遍历数组
  16. * 如果是文件   如果文件是以.java结尾  就用IO流读 并改名
  17. * 改名后用IO流写 改过名后的文件
  18. * 是文件夹有调用递归
  19. * 关流
  20. * */
  21. public class Practice_CopyFile {

  22.         public static void main(String[] args) throws IOException {
  23.                 File src = getFile();        //原文件路径
  24.                 File dest = getFile();        //目标文件夹路径
  25.                                 
  26.                 copy(src,dest);                        //调用复制功能
  27.                
  28.         }

  29.         public static File getFile() {
  30.                         //创建键盘录入对象
  31.                 Scanner sc = new Scanner(System.in);
  32.                 System.out.println("请录入一个文件夹路径:");
  33.                         //无限循环
  34.                 while(true){
  35.                         String line = sc.nextLine();
  36.                         //将字符串封装成File对象
  37.                         File file = new File(line);
  38.                         //如果路径不存在,提示
  39.                         if(!file.exists()){
  40.                                 System.out.println("不存在,重新录。。。。");
  41.                         //如果是文件路径,提示
  42.                         }else if(file.isFile()){
  43.                                 System.out.println("您录得是文件,请录文件夹路径。。。。");
  44.                         }else{
  45.                         //返回文件
  46.                                 return file;
  47.                         }
  48.                 }
  49.         }
  50.         
  51.         public static void copy(File src, File dest) throws IOException{
  52.                 //创建目标文件夹,并在目标文件夹中创建原文件夹名
  53.                 File newDir = new File(dest,src.getName());
  54.                 newDir.mkdir();
  55.                 //获取路径下的所有文件或文件夹 封装成File数组
  56.                 File[] subFiles = src.listFiles();
  57.                 //遍历数组
  58.                 for(File subFile : subFiles){
  59.                 //判断如果是文件
  60.                         if(subFile.isFile()){
  61.                                 //如果文件名是以.java结尾
  62.                                 if(subFile.getName().endsWith(".java")){
  63.                                 //用IO流读
  64.                                         BufferedInputStream bis = new BufferedInputStream(
  65.                                                         new FileInputStream(subFile));        
  66.                                 //改名
  67.                                         String subFileName = subFile.getName();                                       
  68.                                         String newName = subFileName.replace(".java", ".txt");
  69.                                         File  fff = new File(dest, newName);
  70.                                 //用IO流写 改名后的文件
  71.                                         BufferedOutputStream bos = new BufferedOutputStream(
  72.                                                         new FileOutputStream(fff));
  73.                                 //高效读取
  74.                                 byte[] bys = new byte[1024*8];
  75.                                 int len;
  76.                                 while((len = bis.read(bys))!= -1){
  77.                                         bos.write( bys,0,len);                                       
  78.                                 }
  79.                                 //关流
  80.                                 bis.close();
  81.                                 bos.close();                                
  82.                                 }                                                               
  83.                                 //是文件夹就调用递归
  84.                         }else {
  85.                                 copy(subFile,newDir);
  86.                         }
  87.                 }
  88.         }
  89.        }
复制代码

3 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
目前我们还没学到这里  看起来很难的样子 虽然看不懂 就当是预习吧!!
回复 使用道具 举报
袁有福123 发表于 2015-11-19 21:28
目前我们还没学到这里  看起来很难的样子 虽然看不懂 就当是预习吧!!

学了就不难了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马