修改文件后缀


以下是将一个jpg文件的后缀改成png的后缀文件


package com.ishangbin.us.controller.v1;

import java.io.*;

/**
 * @author Hui.Zhou
 * @date 2016年10月26日 15:32:15
 */
public class Test {
	public static void main(String[] args) {
		//需要修改的文件路径
		String fromPath = "h:/";
		//需要修改的文件后缀
		String fromFileAbility = ".jpg";
		//修改后的文件路径
		String toPath = "h:/";
		//修改后的文件后缀
		String toFileAbility = ".png";

		// 1.检查文件是否存在
		File[] files = existJpg(fromPath, fromFileAbility);
		// 2.如果存在就修改成png
		if (files != null && files.length > 0) {
			updatePng(fromFileAbility, toPath, toFileAbility, files);
		}

	}

	private static File[] existJpg(String fromPath, final String fromFileAbility) {
		/* 第一步:获取文件目录 */
		File dir = new File(fromPath);
		if (!(dir.exists() && dir.isDirectory())) {
			try {
				throw new Exception("目录" + dir.getAbsolutePath() + "不存在");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		/* 第二步:列出该目录下所有的.jpg文件 */
		File[] files = dir.listFiles(new FilenameFilter() {
			// 获取.java文件时使用listFiles(FilenameFilter filter)方法,创建一个过滤文件名的Filter
			@Override
			public boolean accept(File dir, String name) {
				if (name != null && name.contains(fromFileAbility)) {
					// 检测文件名是否是以.jpg结尾,是返回true,否则继续检测下一个文件
					if (name.toLowerCase().endsWith(fromFileAbility)) {
						return true;
					}
				}
				return false;
			}
		});
		return files;
	}

	private static void updatePng(final String fromFileAbility, String toPath, final String toFileAbility,
			File[] files) {
		/* 第三步:获取目标文件夹,如果不存在就建立该文件夹 */
		File destDir = new File(toPath);
		if (!destDir.exists()) {
			destDir.mkdir();
		}
		for (File file : files) {
			System.out.println(file.getName());
			FileInputStream fis = null;
			try {
				fis = new FileInputStream(file);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
			/* 第四步:将得到的文件名称的扩展名改为.jad */
			String destFileName = file.getName().replaceAll("\\" + fromFileAbility + "$", "\\" + toFileAbility);
			try {
				FileOutputStream fos = new FileOutputStream(new File(destDir, destFileName));
				/* 第五步:将文件重新写入目标文件夹 */
				copy(fis, fos);
				fis.close();
				fos.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}
	}

	public static void copy(InputStream in, OutputStream out) {
		byte[] buf = new byte[1024];
		int len = 0;
		/* 读取文件内容并写入文件字节流中 */
		try {
			while ((len = in.read(buf)) != -1) {
				out.write(buf, 0, len);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值