拷贝 文件夹 路径 并重新命名 其中的图片 101_ObjectCategories

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;    
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
 
public class CopyOfTakeFilePathAndName2 {   
	//处理101_ObjectCategories 将其中的文件夹里的文件全部搞出来,以子文件夹图片名命名
    public static void main(String[] args) throws FileNotFoundException{   
        // This is the path where the file's name you want to take.   
        String path = "D:\\101_ObjectCategories";
        String path2 = "D:\\COPY101_ObjectCategories";
        File file = new File(path);
        File[] array = file.listFiles();
        for(int i =0;i< array.length;i++) {  
        	try {
				copyDirectiory(array[i].getPath(),path2);
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			} //得到根目录下的文件路径
       }
   }      
   public static void copyFile(File sourceFile, File targetFile)
			throws IOException {
		// 新建文件输入流并对它进行缓冲
		FileInputStream input = new FileInputStream(sourceFile);
		BufferedInputStream inBuff = new BufferedInputStream(input);

		// 新建文件输出流并对它进行缓冲
		FileOutputStream output = new FileOutputStream(targetFile);
		BufferedOutputStream outBuff = new BufferedOutputStream(output);

		// 缓冲数组
		byte[] b = new byte[1024 * 5];
		int len;
		while ((len = inBuff.read(b)) != -1) {
			outBuff.write(b, 0, len);
		}
		// 刷新此缓冲的输出流
		outBuff.flush();

		// 关闭流
		inBuff.close();
		outBuff.close();
		output.close();
		input.close();
	}

	// 复制文件夹
	public static void copyDirectiory(String sourceDir, String targetDir)
			throws IOException {
		// 新建目标目录
		// (new File(targetDir)).mkdirs();
		// 获取源文件夹当前下的文件或目录

		File[] file = (new File(sourceDir)).listFiles();
		String s3 = sourceDir.toString();
     	System.out.println(s3.substring(24,s3.length())); // 打印出来
		for (int i = 0; i < file.length; i++) {
			File sourceFile = file[i];
			// 目标文件
			if (file[i].isFile()) {
				String s2 =file[i].getName();
				File targetFile = new File(targetDir + "\\" +s3.substring(24,s3.length())+ s2.substring(5,s2.length()));
				copyFile(sourceFile, targetFile);
//	         if (file[i].isDirectory()) {  
//	                // 准备复制的源文件夹  
//	                String dir1 = sourceDir + File.separator + file[i].getName();  
//	                // 准备复制的目标文件夹  
//	                String dir2 = targetDir + File.separator + file[i].getName();  
//	                copyDirectiory(dir1, dir2);  
//	            } 
			}
		}

	}
   }   

把上述分类好的结果处理       拷贝到指定位置以类命名的文件夹。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
//拷贝路径;实现对文件夹内图片以前6个字符开头的命名成新文件夹
//对catch 101类图像 分类成文件夹形式:想法是基于每一类图像中都有001.jpg字符串,然后找到它,截取完整路径中图片名部分,来命名文件夹,再根据包含这个类名来拷贝进去
public class CopyPath101 {
	public static void main(String[] args) throws FileNotFoundException {
		// This is the path where the file's name you want to take.
		String Path = "D:\\COPY101_ObjectCategories";
		File[] file = (new File(Path)).listFiles();
		for (int i = 0; i < file.length; i++) {

			String s = file[i].toString();
			if (s.contains("0001.jpg")) {
				String s1 = s.substring(28, s.length() - 9);// 截取完整路径中图片名部分
				System.out.println(s1);
				File target = new File("D:\\COPY101_ObjectCategories_clssify\\" + s1);
				target.mkdirs();
				try {
					copyDirectiory(Path, target.getPath());

				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}
	}
	// 拷贝文件到文件
	public static void copyFile(File sourceFile, File targetFile)
			throws IOException {
		// 新建文件输入流并对它进行缓冲
		FileInputStream input = new FileInputStream(sourceFile);
		BufferedInputStream inBuff = new BufferedInputStream(input);

		// 新建文件输出流并对它进行缓冲
		FileOutputStream output = new FileOutputStream(targetFile);
		BufferedOutputStream outBuff = new BufferedOutputStream(output);

		// 缓冲数组
		byte[] b = new byte[1024 * 5];
		int len;
		while ((len = inBuff.read(b)) != -1) {
			outBuff.write(b, 0, len);
		}
		// 刷新此缓冲的输出流
		outBuff.flush();

		// 关闭流
		inBuff.close();
		outBuff.close();
		output.close();
		input.close();
	}

	// 复制文件夹
	public static void copyDirectiory(String sourceDir, String targetDir)
			throws IOException {
		// 新建目标目录
		// (new File(targetDir)).mkdirs();
		// 获取源文件夹当前下的文件或目录

		File[] file = (new File(sourceDir)).listFiles();
		String s2 = targetDir.toString();
		String s3 = s2.substring(36, s2.length());
		System.out.println(s3); // 打印出来
		for (int i = 0; i < file.length; i++) {
			// if (file[i].isFile()) {
			// 源文件
			File sourceFile = file[i];
			// 目标文件
			if ((file[i].toString()).contains(s3)) {
				// 查看有没有包含targetDir中的后面那个文件夹的目录名称
				File targetFile = new File(targetDir + "\\" + file[i].getName());
				// System.out.println(targetDir+"\\"+file[i].getName());
				targetFile.createNewFile();// 没有一定要创建一个
				copyFile(sourceFile, targetFile);

			}
		}

	}

}

处理得到所有类(文件夹名)的txt,txt保存都是图片名

import java.io.File;    
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
 
public class TakeFilePathAndName {   
	//得到每一个文件夹内的子文件夹,并以子文件夹命名的
    public static void main(String[] args) throws FileNotFoundException{   
        // This is the path where the file's name you want to take.   
        String path = "D:\\COPY101_ObjectCategories_clssify";
        File file = new File(path);
        File[] array = file.listFiles();
        String s = null;
        for(int i =0;i< array.length;i++) {
        	  try {
        		  s = "D:\\COPY101_ObjectCategories_clssify_txt\\"+array[i].getName()+".txt";
        		  File file1 = new File(s);
	 				file1.createNewFile();
	 				System.out.println(s);
	 			} catch (IOException e) {
	 				// TODO 自动生成的 catch 块
	 				e.printStackTrace();
	 			}	  
        	  getFile(array[i].getPath(),s); //得到根目录下的文件路径
        }
    }      
    private static void getFile(String path,String s) {   
        // get file list where the path has          
        // get the folder list  
    	File file1 = new File(path); 
        File[] array = file1.listFiles(); 
	    try {
	    	FileWriter output = new FileWriter(s);
            for(int i=0;i<array.length;i++){        
	         	if(array[i].isFile()) {		
			   // System.out.println(array[i].getName());
				   output.append(array[i].getName()+":");//添加进去文件(图片)名字
  			    }	  
            }
			output.close();
		   } catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
      }   
    }   



已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页