以下是将一个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();
}
}
}