- package cn.itcast.spx_03;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- //IO复制文件改后缀名,用高效流多层文件夹(递归)。
- /*
- * 思路:
- * 1. 创建数据源
- * 2. 创建目的地
- * 3.将file对象转换为File数组,遍历每个数组,
- * 4.获得每个File对象,判断:
- * 如果是文件夹,就建立文件夹,然后在重复3
- * 如果不是文件夹,改名,然后复制到指定目录
- *
- */
- public class FileCopyDemo {
- public static void main(String[] args) throws IOException {
- // 创建数据源
- File srcFile = new File("e:\\aaaa");
- // 創建目的地
- File destFile = new File("F:\\bbbb");
- if(!destFile.exists()){
- destFile.mkdirs();
- }
- FileCopyDemo.isFile(srcFile,destFile);
-
- }
- // 定义一个方法,判断数组是否是文件夹
- public static void isFile(File srcFile,File destFile) throws IOException{
- // 转换成File数组
- File[] file = srcFile.listFiles();
- // 遍历数组,获取每个元素
- for (File file2 : file) {
- // 判斷是否是文件夾,如果是就创建,然后递归.
- if(file2.isDirectory()){
-
- String name = file2.getName();
- File ff = new File(destFile,name);
- ff.mkdirs();
- isFile(file2,ff);
- }
- else{
- String name = file2.getName();
- String newName = name.replace(".java",".txt");
- // 创建最终文件
- File newFile = new File(destFile,newName);
- BufferedReader br = new BufferedReader(new FileReader(file2));
- BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
- String line = null;
- while((line = br.readLine())!= null){
- bw.write(line);
- bw.newLine();
- bw.flush();
- }
- }
- }
- }
- }
- public class TicketsRunnable implements Runnable {
- private int tickets = 100;
- @Override
- public void run() {
- while (true) {
- synchronized (this) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- if (tickets > 0) {
- //当剩余票数为50时,进入此判断
- if(tickets == 50 ){
- //如果当前线程不是指定的线程,就等待
- if(!Thread.currentThread().getName().equals("窗口4")){
- try {
- this.wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }else{
- //当是指定线程时,执行打印语句
- System.out.println(Thread.currentThread().getName()
- + "正在卖第" + (tickets--) + "张票");
- //唤醒所有线程,继续执行
- notifyAll();
- }
- }
- System.out.println(Thread.currentThread().getName()
- + "正在卖第" + (tickets--) + "张票");
- }
- }
- if(tickets<1){
- break;
- }
- }
- }
- }
复制代码 |
|