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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dangyongping 中级黑马   /  2016-5-8 23:29  /  924 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package cn.itcast.spx_03;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;

  9. //IO复制文件改后缀名,用高效流多层文件夹(递归)。
  10. /*
  11. * 思路:
  12. * 1. 创建数据源
  13. * 2. 创建目的地
  14. * 3.将file对象转换为File数组,遍历每个数组,
  15. * 4.获得每个File对象,判断:
  16. * 如果是文件夹,就建立文件夹,然后在重复3
  17. * 如果不是文件夹,改名,然后复制到指定目录
  18. *
  19. */
  20. public class FileCopyDemo {
  21.         public static void main(String[] args) throws IOException {
  22. //                创建数据源
  23.                 File srcFile = new File("e:\\aaaa");
  24. //                創建目的地
  25.                 File destFile = new File("F:\\bbbb");
  26.                 if(!destFile.exists()){
  27.                         destFile.mkdirs();
  28.                 }
  29.                 FileCopyDemo.isFile(srcFile,destFile);
  30.                
  31.         }
  32. //        定义一个方法,判断数组是否是文件夹
  33.         public static void isFile(File srcFile,File destFile) throws IOException{
  34. //                转换成File数组
  35.                 File[] file = srcFile.listFiles();
  36. //                遍历数组,获取每个元素
  37.                 for (File file2 : file) {
  38. //                        判斷是否是文件夾,如果是就创建,然后递归.
  39.                         if(file2.isDirectory()){
  40.                                
  41.                                 String name = file2.getName();
  42.                                 File ff = new File(destFile,name);
  43.                                 ff.mkdirs();
  44.                                 isFile(file2,ff);
  45.                         }

  46.                 else{
  47.                         String name = file2.getName();
  48.                         String newName = name.replace(".java",".txt");
  49. //                        创建最终文件
  50.                         File newFile = new File(destFile,newName);
  51.                         BufferedReader br = new BufferedReader(new FileReader(file2));
  52.                         BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
  53.                         String line = null;
  54.                         while((line = br.readLine())!= null){
  55.                                 bw.write(line);
  56.                                 bw.newLine();
  57.                                 bw.flush();
  58.                         }
  59.                 }
  60.         }
  61.         }
  62. }
  63. public class TicketsRunnable implements Runnable {

  64.         private int tickets = 100;

  65.         @Override
  66.         public void run() {
  67.                 while (true) {
  68.                         synchronized (this) {
  69.                                 try {
  70.                                         Thread.sleep(100);
  71.                                 } catch (InterruptedException e) {
  72.                                         e.printStackTrace();
  73.                                 }
  74.                                 if (tickets > 0) {
  75.                                         //当剩余票数为50时,进入此判断
  76.                                         if(tickets == 50 ){
  77.                                                 //如果当前线程不是指定的线程,就等待
  78.                                                 if(!Thread.currentThread().getName().equals("窗口4")){
  79.                                                         try {
  80.                                                                 this.wait();
  81.                                                         } catch (InterruptedException e) {
  82.                                                                 e.printStackTrace();
  83.                                                         }
  84.                                                 }else{
  85.                                                         //当是指定线程时,执行打印语句
  86.                                                         System.out.println(Thread.currentThread().getName()
  87.                                                                         + "正在卖第" + (tickets--) + "张票");
  88.                                                         //唤醒所有线程,继续执行
  89.                                                         notifyAll();
  90.                                                 }
  91.                                         }
  92.                                         System.out.println(Thread.currentThread().getName()
  93.                                                         + "正在卖第" + (tickets--) + "张票");
  94.                                 }
  95.                         }
  96.                         if(tickets<1){
  97.                                 break;
  98.                         }
  99.                 }
  100.         }
  101. }
复制代码

8 个回复

倒序浏览
连个题目都没有
回复 使用道具 举报
路过....看过....走了 ...
回复 使用道具 举报
楼主好人
回复 使用道具 举报

IO复制文件改后缀名,用高效流多层文件夹(递归)
回复 使用道具 举报
谢谢分享楼主好人
回复 使用道具 举报
sasyun 中级黑马 2016-5-11 22:29:11
7#
楼主好人
回复 使用道具 举报
{:2_31:}感谢分享。
回复 使用道具 举报
都是课堂案例啊,点招题还能用eclipse?唉,不说了社招的苦逼复习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马