Java判断文件是否为图片的实现代码

版权申诉
4 下载量 129 浏览量 更新于2024-09-11 收藏 1.14MB PDF 举报
"Java 判断是否为图片的步骤和方法" 在Java编程中,判断一个文件是否为图片是一项常见的任务,特别是在处理用户上传文件或处理文件流时。本篇文章将介绍如何使用Java来检查一个文件是否是图片。以下是具体的操作步骤和代码实现。 1. 创建Java项目与类 首先,你需要在Eclipse中创建一个新的Java项目。通过在项目工程的空白处右击鼠标,选择"New" -> "Project",然后在弹出的对话框中选择"Java Project"。给项目命名,例如"ceshi",并点击"Finish"。接着,在"src"目录下创建一个新的Java类,比如"photo",并确保勾选"Public static void main(String[] args)"选项。 2. 编写判断图片的代码 在新创建的"photo"类中,定义一个私有内部类,如"IsImage",用于实现图片判断功能。编写一个静态方法,接收一个File对象作为参数,这个方法将用于检查文件是否为图片。 ```java public class photo { private static class IsImage { public static boolean isImage(File file) { try { BufferedImage image = ImageIO.read(file); if (image != null) { return true; } } catch (IOException e) { // 如果捕获到异常,可能是非图片文件 } return false; } } public static void main(String[] args) { File imgFile = new File("path_to_your_image.jpg"); // 替换为实际图片路径 System.out.println(IsImage.isImage(imgFile)); // 如果是图片,输出true;否则,输出false File nonImgFile = new File("path_to_non_image_file.txt"); // 替换为非图片文件路径 System.out.println(IsImage.isImage(nonImgFile)); // 如果是图片,输出true;否则,输出false } } ``` 3. 运行和测试 运行这个"main"方法,程序会尝试读取指定的文件路径。如果文件是图片,`ImageIO.read(file)`会返回一个非空的BufferedImage对象,此时`isImage`方法返回`true`。如果文件不是图片,或者无法读取,`ImageIO.read(file)`会抛出IOException,`isImage`方法返回`false`。 总结:通过使用Java的`javax.imageio.ImageIO`包中的`read`方法,我们可以轻松地判断一个文件是否为图片。这个方法不仅适用于本地文件,也可以应用于文件流,因此在处理网络上传的文件时同样适用。记住,始终处理可能的IOException,以确保代码的健壮性。
2019-12-13 上传
package com.ylw.p2p.common.utils; import java.awt.image.BufferedImage; 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; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FileUtils { public final static Map IMG_FILE_TYPE_MAP = new HashMap(); /** * @Description: 图片文件上传 * @author Xiao.Sky * @creaetime 2015年4月17日下午5:20:27 * @param request * @param response * @param photo * @param strtmp * 文件名称 xxx.jpg * @param path * 文件路径 * @param num * @return */ public static boolean updatePhoto(HttpServletRequest request,HttpServletResponse response, File photo, String strtmp,String path, long num) { File dir = new File(path); // 如果不存在就创建次文件夹 if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); // 如果存在此文件就删除此文件 if (newFile.exists()) newFile.delete(); BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); FileOutputStream fos = new FileOutputStream(newFile); BufferedImage src = ImageIO.read(fis); ImageIO.write(src, "png", fos); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != bis) { bis.close(); } if (null != fis) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } } return true; } /** * * @Description: 普通文件上传 * @author Xiao.Sky * @creaetime 2015年4月23