100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java复制移动图片到指定文件夹

java复制移动图片到指定文件夹

时间:2020-04-01 22:38:45

相关推荐

java复制移动图片到指定文件夹

**近期学习过程中,需要对图片分类结果进行可视化展示,代码结果有图片的名称对应的类别,现需要将属于同一个类别的图片复制或移动到相同的文件夹中。

检索发现没有好用的代码,于是自己改改删删有了以下版本,新手上路,请多指教,感谢!

**

**案列介绍:

下图有六张图片,需要按照1.txt中的分类结果将图片进行分类,通过以下代码,可以实现将图片复制或移动到对应类别文件夹下的功能,如图3所示。

两个代码的区别在于:

1.复制代码完成后,原文件夹图片复制后依然存在;

2.移动代码完成后,原文件夹图片移动后不存在。**

1.复制目标图片至指定文件夹

package movepicture;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;/** 这个是图片,对应movepic*/public class copy_move {//方法importCsv的作用是读取txt,在这里用于读取需要移动的图片IDpublic static List<String> importCsv(File file){List<String> dataList=new ArrayList<String>();BufferedReader br=null;try {br = new BufferedReader(new FileReader(file));String line = ""; while ((line = br.readLine()) != null) {dataList.add(line);}}catch (Exception e) {}finally{if(br!=null){try {br.close();br=null;} catch (IOException e) {e.printStackTrace();}}}return dataList;}private static void copyFile(File srcFile,File destFile) throws IOException {//该方法为复制文件,srcFile是原文件所在地址,destFile是目标文件所在地址File[] fileArray1 = srcFile.listFiles();File[] fileArray2 = destFile.listFiles();BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));byte[] bys = new byte[1024];int len = 0;while ((len = bis.read(bys)) != -1) {bos.write(bys, 0, len);}bos.close();bis.close();}public static void main(String[] args) throws IOException {/** sourceFile 是所有的图片初始存放的集合* dataList 是图片分类的txt 格式:class p1 p2 (class为类别,p1 p2为图片名称,中间用空格分开),后附图* 用importCsv方法读取datalist中每一个图片id用于分类* targetFile 是图片类别的文件夹,设置该对象的目的是用于判断类别所在文件夹是否为空,为空的话用mkdir创建一个* as[0]为类别的文件夹名称,如上例中的1、2 ,as[m]为图片的名称* */File sourceFile = new File("******\\testcopy\\all");List<String> dataList=importCsv(new File("******\\testcopy\\1.txt"));if(dataList!=null && !dataList.isEmpty()){for(int i=0; i<dataList.size();i++ ){String s=dataList.get(i);String as[] = s.split("\\s+");for(int m=1;m<as.length;m++) {File targetFile = new File("******\\testcopy\\tesy\\"+as[0]+"\\");File srcFile = new File(sourceFile+"\\"+as[m]+".jpg");File destFile = new File(targetFile+"\\"+as[m]+".jpg");//下面两行用于输出需要复制的图片地址用于检查//System.out.println(sourceFile+"\\"+as[m]+".jpg");//为srcFile//System.out.println(targetFile+"\\"+as[m]+".jpg");// 为destFileif (!targetFile.exists()) {targetFile.mkdir();}//调用copyFile方法,依次复制目标图片到指定位置copyFile(srcFile,destFile);}} }}}

2.移动目标图片至指定文件夹

import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class movepic {//importCsv读取txt中图片的IDpublic static List<String> importCsv(File file){List<String> dataList=new ArrayList<String>();BufferedReader br=null;try {br = new BufferedReader(new FileReader(file));String line = ""; while ((line = br.readLine()) != null) {dataList.add(line);}}catch (Exception e) {}finally{if(br!=null){try {br.close();br=null;} catch (IOException e) {e.printStackTrace();}}}return dataList;}private static void moveFile2(File sourceFile,File targetFile) {//该方法为复制文件,sourceFile源文件夹路径(存放图片路径), targetFile是目标文件夹路径(没有会自动创建)File[] fileArray1 = sourceFile.listFiles();File[] fileArray2 = targetFile.listFiles();for (File file : fileArray1) {// SUFFIX用于判断指定图片是否存在,如果存在就不移动并且输出“文件已存在”if (file.getName().contentEquals(SUFFIX)) {targetFile = new File( targetFile + "\\"+file.getName());if (targetFile.exists()) {System.out.println("文件已存在");} else {file.renameTo(targetFile);System.out.println("移动文件成功");}} }}public static String SUFFIX = null; public static void main(String[] args) {// 源文件夹路径(存放图片路径)File sourceFile = new File("******\\testcopy\\all");//目标文件夹路径(没有会自动创建)//图片id的地址List<String> dataList=importCsv(new File("******\\testcopy\\1.txt"));if(dataList!=null && !dataList.isEmpty()){for(int i=0; i<dataList.size();i++ ){String s=dataList.get(i);String as[] = s.split("\\s+");for(int m=1;m<as.length;m++) {File targetFile = new File("******\\testcopy\\tesy\\"+as[0]+"\\");SUFFIX = as[m] + ".jpg";if (!targetFile.exists()) {targetFile.mkdir();}//调用moveFile2方法,依次移动目标图片到指定位置moveFile2(sourceFile,targetFile);}} }}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。