java文件名工具类_扩展名、文件夹、文件等判断

本文介绍了一个实用的文件路径处理工具类,提供了获取文件名、扩展名等功能,并支持扩展名的填充与修正,确保路径的正确性。

唯一依赖org.apache.commons.lang.StringUtils请下载相关包

package com.wesley.framework.commen.io;

import org.apache.commons.lang.StringUtils;

/**
 * @author it.zl
 *
 */
public class PathUtil {

	public static final String DOT = ".";
	public static final String SLASH_ONE = "/";
	public static final String SLASH_TWO = "\\";

	/**
	 * 获取没有扩展名的文件名
	 * @param fileName
	 * @return
	 */
	public static String getWithoutExtension(String fileName) {
		String ext = StringUtils.substring(fileName, 0,
				StringUtils.lastIndexOf(fileName, DOT));
		return StringUtils.trimToEmpty(ext);
	}

	/**
	 * 获取扩展名
	 * @param fileName
	 * @return
	 */
	public static String getExtension(String fileName) {
		if (StringUtils.INDEX_NOT_FOUND == StringUtils.indexOf(fileName, DOT))
			return StringUtils.EMPTY;
		String ext = StringUtils.substring(fileName,
				StringUtils.lastIndexOf(fileName, DOT));
		return StringUtils.trimToEmpty(ext);
	}

	/**
	 * 判断是否同为扩展名
	 * @param fileName
	 * @param ext
	 * @return
	 */
	public static boolean isExtension(String fileName, String ext) {
		return StringUtils.equalsIgnoreCase(getExtension(fileName), ext);
	}

	/**
	 * 判断是否存在扩展名
	 * @param fileName
	 * @return
	 */
	public static boolean hasExtension(String fileName) {
		return !isExtension(fileName, StringUtils.EMPTY);
	}

	/**
	 * 得到正确的扩展名
	 * @param ext
	 * @return
	 */
	public static String trimExtension(String ext) {
		return getExtension(DOT + ext);
	}

	/**
	 * 向path中填充扩展名(如果没有或不同的话)
	 * @param fileName
	 * @param ext
	 * @return
	 */
	public static String fillExtension(String fileName, String ext) {
		if (!hasExtension(fileName)) {
			return fileName + getExtension(ext);
		}
		if (!isExtension(fileName, ext)) {
			return getWithoutExtension(fileName) + getExtension(ext);
		}
		return fileName;
	}

	/**
	 * 判断是否是文件PATH
	 * @param fileName
	 * @return
	 */
	public static boolean isFile(String fileName) {
		return hasExtension(fileName);
	}

	/**
	 * 判断是否是文件夹PATH
	 * @param fileName
	 * @return
	 */
	public static boolean isFolder(String fileName) {
		return !hasExtension(fileName);
	}

	/**
	 * 链接PATH前处理
	 * @param path
	 * @return
	 */
	public static String trimLeftPath(String path) {
		if (isFile(path))
			return path;
		path = StringUtils.trimToEmpty(path);
		String top = StringUtils.left(path, 1);
		if (StringUtils.equalsIgnoreCase(SLASH_ONE, top)
				|| StringUtils.equalsIgnoreCase(SLASH_TWO, top))
			return StringUtils.substring(path, 1);
		return path;
	}

	/**
	 * 链接PATH后处理
	 * @param path
	 * @return
	 */
	public static String trimRightPath(String path) {
		if (isFile(path))
			return path;
		path = StringUtils.trimToEmpty(path);
		String bottom = StringUtils.right(path, 1);
		if (StringUtils.equalsIgnoreCase(SLASH_ONE, bottom)
				|| StringUtils.equalsIgnoreCase(SLASH_TWO, bottom))
			return StringUtils.substring(path, 0, path.length() - 2);
		return path + SLASH_ONE;
	}

	/**
	 * 链接PATH前后处理,得到准确的链接PATH
	 * @param path
	 * @return
	 */
	public static String trimPath(String path) {
		path = trimLeftPath(path);
		path = trimRightPath(path);
		return path;
	}

	/**
	 * 通过数组完整链接PATH
	 * @param paths
	 * @return
	 */
	public static String bulidFullPath(String... paths) {
		StringBuffer sb = new StringBuffer();
		for (String path : paths) {
			sb.append(trimPath(path));
		}
		return sb.toString();
	}

	public static void main(String[] args) {
		String fileName = "H:\\Intel\\Logs\\12312312.log";
		System.out.println(PathUtil.fillExtension(fileName, ".dit"));
		String[] paths = { "win", "t", "a", "teswe.te" };
		System.out.println(PathUtil.bulidFullPath(paths));
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值