`
numen06
  • 浏览: 76150 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

JAVA文件名工具类-扩展名、文件夹、文件等判断

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

package com.wesley.framework.commen.io;

import java.io.File;

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) {
		fileName = replacePath(fileName + DOT);
		ext = trimExtension(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);
	}

	public static String replacePath(String path) {
		return StringUtils.replace(StringUtils.trimToEmpty(path), SLASH_ONE,
				SLASH_TWO);
	}

	/**
	 * 链接PATH前处理
	 * 
	 * @param path
	 * @return
	 */
	public static String trimLeftPath(String path) {
		if (isFile(path))
			return path;
		path = replacePath(path);
		String top = StringUtils.left(path, 1);
		if (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 = replacePath(path);
		String bottom = StringUtils.right(path, 1);
		if (StringUtils.equalsIgnoreCase(SLASH_TWO, bottom))
			return StringUtils.substring(path, 0, path.length() - 2);
		return path + SLASH_TWO;
	}

	/**
	 * 链接PATH前后处理,得到准确的链接PATH
	 * 
	 * @param path
	 * @return
	 */
	public static String trimPath(String path) {
		path = StringUtils.replace(StringUtils.trimToEmpty(path), SLASH_ONE,
				SLASH_TWO);
		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 = "D:/apache-tomcat-7.0.23/webapps/ROOT/report rets/attachment/report/test/";
		System.out.println(PathUtil.fillExtension(fileName, "PDF"));
		System.out.println(new File(fileName).getPath());
		String[] paths = { "win", "t", "a", "teswe.te" };
		System.out.println(PathUtil.bulidFullPath(paths));
	}
}
2
1
分享到:
评论

相关推荐

    Eclipse中web-inf和meta-inf文件夹的信息

    `WEB-INF` 文件夹主要存在于 Web 项目中,用于组织和管理 Web 应用程序的资源文件,如配置文件、类文件等。它不适用于普通的 J2SE 项目。 **1. WEB-INF/web.xml 文件** - **功能**: 定义 Web 应用程序的部署描述符...

    java反编译工具(可以集成到eclipse当中)

    反编译结果以.java为扩展名。 四、Option -p 将反编译结果输出到屏幕 c:\java\>jad -p example1.class 将反编译结果重定向到文件 c:\java\>jad -p example1.class>example1.java 五、Option -d 指定反编译...

    用一个文件夹的文件重命名别一个文件夹的文件

    对于每个文件,它获取文件名(不含扩展名)并应用到目标文件夹B的对应文件上。 如果不想手动编写脚本,也可以使用图形界面工具,如Total Commander、Bulk Rename Utility等,它们提供了直观的界面和丰富的重命名...

    文件名替换追加工具

    在Windows系统中,".exe"扩展名表示可执行文件,这意味着用户可以直接运行这个程序来执行文件名的替换和追加操作。不过,需要注意的是,“rm”通常是删除文件的命令,但在这里可能是开发者为了某种目的而命名的。 ...

    JAVA 工具类集合,有自定义的,也有收藏的,以备项目使用.zip

    压缩包中的文件名为 "5575757",虽然没有具体的文件名信息,但我们可以推测这可能是一个Java源代码文件,其中包含了自定义的工具类。这些工具类可能包括但不限于以下几个方面: 1. **字符串工具类**:可能包含了对...

    Java文件转换为 Exe 可执行文件

    配置文件为:与可执行文件同一文件夹内,文件名相同,扩展名为 ".cfg" 的文件。 配置方法为:指明 jvm.dll 所在相对位置或者绝对位置。 举例: 对于前面的例子 test.exe,对应的配置文件为 test.cfg。 如果将 jre ...

    批量修改文件夹文件名称

    在IT行业中,批量修改文件或文件夹的名称是一项常见的任务,尤其是在处理大量数据或资源时。C#是一种广泛用于开发Windows应用程序的编程语言,它提供了强大的文件系统操作能力,包括文件和目录的命名更改。本项目是...

    如何遍历文件夹查找文件

    4. **过滤与查找**:在遍历过程中,通常需要根据特定条件(如文件名、扩展名或文件大小)筛选出目标文件。可以使用正则表达式或者自定义过滤器来实现。 5. **同步与异步**:根据应用场景,遍历文件夹可以是同步的...

    文件、文件夹重命名

    重命名文件或文件夹的操作会影响到文件系统中的元数据,包括文件名、扩展名以及与之关联的属性信息。 3. **批处理重命名**: 当需要对大量文件进行重命名时,手动操作就显得效率低下。这时,可以利用批处理命令...

    FilenameFileter list 查看 java文件列表(过滤 java文件)

    在Java编程中,`FilenameFilter` 是一个接口,它用于过滤文件名,允许我们根据特定的文件扩展名或模式选择性地列出目录中的文件。在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 ...

    查找重复文件和同名文件[java code]

    这通常通过文件扩展名匹配来实现,可以在代码中设置一个白名单或黑名单列表。 3. **忽略文件类型**:除了过滤文件类型,该工具还提供了忽略某些文件的能力,这可能是为了避开系统文件或特定的应用程序文件,以避免...

    传智播客java基础视频笔记

    - **隐藏文件扩展名**:通过“工具”->“文件夹选项”->“查看”取消勾选“隐藏已知文件类型的扩展名”。 - **文件名与类名一致**:虽然不是强制性的,但为了避免混淆,最好保持一致。 - **大小写敏感**:Java语言...

    读取所选文件夹下的所有文件

    在Python中,可以使用`os`或`os.path`模块的`listdir()`函数获取文件夹中的所有文件名,然后通过判断每个条目是文件还是子文件夹,递归处理子文件夹。在Java中,可以使用`java.io.File`类的`listFiles()`方法实现...

    用Java输出HTML文件

    - **使用`FilenameFilter`筛选URL文件**:`FilenameFilter`接口用于过滤文件列表,只保留扩展名为.url的文件。通过实现`FilenameFilter.accept()`方法,可以精确控制哪些文件将被处理。 ```java FilenameFilter ...

    JAVA语言学习笔记之01

    - 解决方案:在Windows系统中取消隐藏文件扩展名的功能,具体步骤为:“我的电脑”->“打开”->“工具”->“文件夹选项”->“查看”-> 取消勾选“隐藏已知文件类型的扩展名”。 - **问题8:** 当class上没有public...

    JAVA文件管理器原代码

    为了允许用户按类型或扩展名筛选文件,文件管理器通常会使用FileFilter接口。这允许用户只看到特定类型的文件,比如只显示所有.txt文件。 8. **对话框和警告**: Java Swing提供JOptionPane类,可以创建各种...

    如何使用记事本编写java程序.docx

    - 如果看不到文件扩展名,需要调整系统设置以便显示所有文件扩展名。 - 打开“计算机”或“此电脑”,选择“组织”->“文件夹和搜索选项”->“查看”。 - 在高级设置中找到“隐藏已知文件类型的扩展名”,取消...

    linux压缩包格式及使用

    Zip 文件通常具有 `.zip` 的扩展名。 ##### 压缩 ```bash zip -r [目标文件夹名].zip [原文件/目录名] ``` - `-r` 表示递归地压缩目录内的所有文件和子目录。 - `[目标文件夹名].zip` 指压缩后的文件名。 - `[原...

    JAVA文件学习,文件搜索器

    【标题】"JAVA文件学习,文件搜索器"指的是一个基于Java编程语言开发的实用工具,它的主要功能是帮助用户在计算机文件系统中快速查找特定的文件或文件夹。这个工具可能利用了Java的I/O流、文件操作以及目录遍历等...

Global site tag (gtag.js) - Google Analytics