将指定文件夹下文件及子文件夹下的文件复制到同一级目录

package com.teamsun.img;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class LocalhostCopyImg {

    /**
     * 将本地文件夹下面所有文件以及子文件夹下的文件复制到指定目录(一级目录)
     *
     */
    public static void main(String[] args) {
        String url = "E:\\img\\imgs";// 目标目录,图片和子文件夹所在的目录
        String copyUrl = "E:\\img\\copyImg";// 复制目录,需要复制的目录
        File file = new File(url);
        File[] tempList = file.listFiles();
        System.out.println("该目录下对象个数:" + tempList.length);
        for (int i = 0; i < tempList.length; i++) {
            // if (tempList[i].isFile()) {
            // System.out.println("文     件:"+tempList[i]);
            // }
            if (tempList[i].isDirectory()) {
                String fileWork = tempList[i] + "";// 每个子文件夹路径
                String fileWorkName = fileWork.substring(fileWork.lastIndexOf("\\") + 1, fileWork.length());// 最后一个文件夹名称
                System.out.println("文件夹:" + fileWorkName);
                // 读取子文件夹下的文件
                File file2 = new File(fileWork);
                File[] tempList2 = file2.listFiles();//读取文件夹下的文件和子文件夹
                for (int a = 0; a < tempList2.length; a++) {
                    if (tempList2[i].isFile()) {
                        String oldFileUrl = tempList2[a] + "";//文件的绝对路径
                        String fileName = oldFileUrl.substring(oldFileUrl.lastIndexOf("\\")+1, oldFileUrl.length());//获取文件名称
                        String fileSuffix = oldFileUrl.substring(oldFileUrl.lastIndexOf(".")+1, oldFileUrl.length());//获取文件后缀
                        String newFileUrl = copyUrl +"\\"+ fileWorkName+fileName;
                        fileSuffix = fileSuffix.toLowerCase();
                        if("jpg".equals(fileSuffix) || "jpeg".equals(fileSuffix) || "bmp".equals(fileSuffix) || "gif".equals(fileSuffix) || "png".equals(fileSuffix) ){//只复制图片格式的
                            CopyImg(oldFileUrl,newFileUrl);
                            System.out.println("复制成功:" + oldFileUrl+"  <--->  " + newFileUrl);
                        }
                    }
                }
            }
        }
        // String url1= "E:\\img\\imgs\\1.jpg";
        // String url2= "E:\\img\\copyImg\\121.jpg";
        // CopyImg(url1,url2);

    }

    /**
     *
     * @param fileUrl
     * @param CopyFileUrl
     * @return 0:正常,1:目标文件不存在,2出现异常
     */
    public static int CopyImg(String fileUrl, String copyFileUrl) {
        try {
            int bytesum = 0;
            int byteread = 0;
            File file = new File(fileUrl);
            if (file.exists()) {// 如果文件存在则执行下面的
                FileInputStream fileIn = new FileInputStream(fileUrl);// 输入流
                FileOutputStream fileOut = new FileOutputStream(copyFileUrl);// 输出流
                byte[] b = new byte[102400];
                while ((byteread = fileIn.read(b)) != -1) {
                    bytesum += byteread;
//                    System.out.println(bytesum);
                    fileOut.write(b, 0, byteread);
                }
                fileIn.close();
            } else {
                return 1;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return 2;
        }
        return 0;
    }

}

在VBA中遍历文件夹下所有文件夹中的Excel工作簿并将它们汇总到同一工作簿,通常需要使用FileSystemObject对象来遍历文件系统,并且使用Excel的Workbooks集合来打开工作簿。以下是一个简单的示例代码: ```vba Sub 合并所有工作簿() Dim fs As Object, folder As Object, subfolder As Object Dim file As Object, wb As Workbook Dim destWb As Workbook Dim destSheet As Worksheet ' 创建一个新的工作簿用于汇总 Set destWb = Workbooks.Add Set destSheet = destWb.Sheets(1) destSheet.Name = "汇总数据" ' 创建FileSystemObject对象 Set fs = CreateObject("Scripting.FileSystemObject") ' 指定要遍历的文件夹路径 Set folder = fs.GetFolder("C:\你的文件夹路径") ' 遍历文件夹文件夹 For Each subfolder In folder.SubFolders For Each file In subfolder.Files If Right(file.Name, 5) = ".xlsx" Or Right(file.Name, 4) = ".xls" Then ' 打开工作簿 Set wb = Workbooks.Open(file.Path) ' 遍历工作簿中的工作表并复制数据到汇总工作簿 Dim sourceSheet As Worksheet For Each sourceSheet In wb.Sheets sourceSheet.UsedRange.Copy destSheet.Cells(destSheet.Rows.Count, 1).End(xlUp).Offset(1, 0) Next sourceSheet ' 关闭打开的工作簿,不保存更改 wb.Close SaveChanges:=False End If Next file Next subfolder ' 清理 Set file = Nothing Set subfolder = Nothing Set folder = Nothing Set fs = Nothing Set destSheet = Nothing Set destWb = Nothing End Sub ``` 在使用这段代码之前,请确保将 `"C:\你的文件夹路径"` 替换成你实际要遍历的文件夹路径。此代码会打开每个找到的Excel文件,并将每个工作表的内容复制到汇总工作簿的一个工作表中。请根据实际需求调整代码中的工作表和数据处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值