任务08 图片文件管理器
10
王伟
开始于 2021-11-21 14:01
0 30 380
已截止

任务尚未发布或者你没有权限查看任务内容。

任务讨论
public class FileUtil {

	// 创建文件夹
	public static boolean createDir(String destDirName) {
		File dir = new File(destDirName);
		if (dir.exists()) {
			System.out.println("创建目录" + destDirName + "失败,目标目录已经存在");
			return false;
		}
		if (!destDirName.endsWith(File.separator)) {
			destDirName = destDirName + File.separator;
		}
		// 创建目录
		if (dir.mkdirs()) {
			System.out.println("创建目录" + destDirName + "成功!");
			return true;
		} else {
			System.out.println("创建目录" + destDirName + "失败!");
			return false;
		}
	}

    //删除文件夹
    public static boolean deleteDir(String path){
                File dirFile = new File(dir+"/");
        if (!dirFile.isDirectory()) return;
        File[] listFiles = dirFile.listFiles();
        try {
            FileUtils.deleteQuietly(listFiles[0]);
            FileUtils.deleteDirectory(dirFile);
        } catch (IOException e) {
            System.out.println(e);
        }
    }

    //复制图片
    public static void copyPic(String sPath, String tPath){
        			try {
				//读取源地址文件的字节流
				FileInputStream in=new FileInputStream(sPath);
				FileOutputStream out=new FileOutputStream(tPath);
				byte[]bs=new byte[1026];
				int count=0;
				while ((count=in.read(bs,0,bs.length))!=-1) {
				//把读取到的字节流写入到目的地址的文件里面
				out.write(bs,0,count);
				
				}
	 			//刷新下输出流
				out.flush();
				// 关闭输入流和输出流
				out.close();
				out.close();
				System.out.println("复制成功!");
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    }
	// 复制文件夹
	public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
		// 新建目标目录
		(new File(targetDir)).mkdirs();
		// 获取源文件夹当前下的文件或目录
		File[] file = (new File(sourceDir)).listFiles();
		for (int i = 0; i < file.length; i++) {
			if (file[i].isFile()) {
				// 源文件
				File sourceFile = file[i];
				// 目标文件
				File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
				copyFile(sourceFile.getAbsolutePath(), targetFile.getAbsolutePath());
			}
			if (file[i].isDirectory()) {
				// 准备复制的源文件夹
				String dir1 = sourceDir + "/" + file[i].getName();
				// 准备复制的目标文件夹
				String dir2 = targetDir + "/" + file[i].getName();
				copyDirectiory(dir1, dir2);
			}
		}
		
	}
    
    //图片重命名
    public static void renameFile(String path, String oldname, String newname){

	static void singleChange(){
		file=new File(path + oldname); //指定文件名及路径
		
		if (file.renameTo(new File(path+newname))) {
			System.out.println("修改成功!");
		} 
		else{
			System.out.println("修改失败");
		}
		
	}
    }
    //得到图片列表
    public static Vector<String> fileList(String path){
				List list = new ArrayList();
		File[] files = file.listFiles();
		for (int i = 0; i < files.length; i++) {
			File file1 = files[i];
			String fileName = file1.getName();
			String prefix = fileName.substring(fileName.lastIndexOf(".") + 1)
					.toLowerCase();
			if ("jpg".equals(prefix) || "png".equals(prefix)
					|| "bmp".equals(prefix) || "gif".equals(prefix)) {
				list.add(fileName);
			}
		}
    }
    //拆分图片
    public static void splitPic(String sPath, String tPath){
        
    }
    //生成缩略图
    public static void thumbnail()String sPath, String tPath){
    	try{
	    	if(!imageFile.canRead()) return;
	        BufferedImage bufferedImage = ImageIO.read(imageFile);
	        if (null == bufferedImage) return;
	        
	        int originalWidth = bufferedImage.getWidth();
	        int originalHeight = bufferedImage.getHeight();
	        
	        //获取缩略图的路径
	        String sPath = imageFile.getAbsolutePath();
			String tPath = (sPath.substring(0,sPath.lastIndexOf(".")))+postfix+(sPath.substring(sPath.lastIndexOf(".")));
	        /*
	        //根据原始宽度获取缩放后的宽度
	        int newWidth = getImgNewWidth(originalWidth);
	        System.out.println("新的宽度:"+newWidth);
	        double scale = (double)originalWidth / (double)newWidth;    // 缩放的比例
	        
	        int newHeight =  (int)(originalHeight / scale);
	        */
	        //计算新的高度和宽度
	        double scale = getImgScale(originalWidth);
	        if(scale==1){//为1,说明按照原图生成缩略图,也就是复制一张图
	        	System.out.println("复制图片,路径为:"+sPath);
	        	FileUtils.copyFile(new File(sPath),new File(tPath));
	        }else{//按照要求生成一张
		        int newWidth =  (int)(originalWidth*scale);
		        int newHeight =  (int)(originalHeight*scale);
		        
				//System.out.println("原始路径:"+sPath+"\n缩略图路径:"+(name+postfix+extName));
		        zoomImageUtils(imageFile,tPath, bufferedImage,newWidth,newHeight);
	        }
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
	public static Vector<String> fileList(String path) {
		Vector<String> vector = new Vector<String>();
		File[] fl = new File(path).listFiles();
		for (int i = 0; i < fl.length; i++) {
			if (fl[i].isFile()) {
//				System.out.println(fl[i].getName());
				vector.add(fl[i].getName());
			}
			else if (fl[i].isDirectory()) {
//				System.out.println(fl[i].getName() + "\\");
				vector.add(fl[i].getName() + "\\");
			}
		}
		return vector;
	}

}
老师您好 我发现我昨天交错了 交的是之前我写的
王伟

任务已更新