`
JavaTestJava
  • 浏览: 54668 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA里文件路经获取转化.简单代码

阅读更多
public static String getPathFromClass(Class cls) throws IOException {
		  String path = null;
		  if (cls == null) {
		   throw new NullPointerException();
		  }
		  URL url = getClassLocationURL(cls);
		  if (url != null) {
		   path = url.getPath();
		   if ("jar".equalsIgnoreCase(url.getProtocol())) {
		    try {
		     path = new URL(path).getPath();
		    } catch (MalformedURLException e) {
		    }
		    int location = path.indexOf("!/");
		    if (location != -1) {
		     path = path.substring(0, location);
		    }
		   }
		   File file = new File(path);
		   path = file.getCanonicalPath();
		  }
		  return path.substring(0, path.lastIndexOf(File.separator)+1);
	}

	
	private static URL getClassLocationURL(final Class cls) {
		  if (cls == null)
		   throw new IllegalArgumentException("null input: cls");
		  URL result = null;
		  final String clsAsResource = cls.getName().replace('.', '/').concat(".class");
		  final ProtectionDomain pd = cls.getProtectionDomain();

		  if (pd != null) {
		   final CodeSource cs = pd.getCodeSource();

		   if (cs != null)
		    result = cs.getLocation();

		   if (result != null) {
		    if ("file".equals(result.getProtocol())) {
		     try {
		      if (result.toExternalForm().endsWith(".jar")
		        || result.toExternalForm().endsWith(".zip"))
		       result = new URL("jar:".concat(
		         result.toExternalForm()).concat("!/")
		         .concat(clsAsResource));
		      else if (new File(result.getFile()).isDirectory())
		       result = new URL(result, clsAsResource);
		     } catch (MalformedURLException ignore) {
		     }
		    }
		   }
		  }

		  if (result == null) {
		   final ClassLoader clsLoader = cls.getClassLoader();
		   result = clsLoader != null ? clsLoader.getResource(clsAsResource)
		     : ClassLoader.getSystemResource(clsAsResource);
		  }
		  return result;
	}
分享到:
评论
2 楼 34982442 2008-09-10  
hocus 写道
JavaTestJava 写道
 if (cls == null) {   
           throw new NullPointerException();   
}   


 catch (MalformedURLException ignore) {
}


result = clsLoader != null ? clsLoader.getResource(clsAsResource)
: ClassLoader.getSystemResource(clsAsResource);


1 楼 hocus 2008-09-09  
JavaTestJava 写道
 if (cls == null) {   
           throw new NullPointerException();   
}   


 catch (MalformedURLException ignore) {
}


result = clsLoader != null ? clsLoader.getResource(clsAsResource)
: ClassLoader.getSystemResource(clsAsResource);

相关推荐

    企业与创投共赢之道(3)融资策划之成长路经设计整理.pdf

    企业与创投共赢之道(3)融资策划之成长路经设计整理.pdf

    三网融合之路经探寻.pdf

    三网融合之路经探寻.pdf

    VB API 获取文件夹路经

    3. **MSSCCPRJ.SCC** - 这是源代码控制的项目文件,与版本控制有关,与获取文件夹路径的直接关系不大。 4. **工程1.vbp** - 这是VB工程文件,记录了项目的元数据,包括引用的库、模块、窗体等信息。 5. **工程1.vbw*...

    山东大学数据结构与算法课程设计实验模拟文件目录系统(有详细注释)源代码和操作文件

    山东大学数据结构与算法课程设计实验模拟文件目录系统(有详细注释)实现源代码(本实验的全部源程序代码,程序风格清晰易理解,有充分的注释)和操作文件 设计并实现目录树 CatalogTree 的ADT,应用CatalogTree结构...

    vb实现文件及文件夹名称提取器

    以下是一个简单的示例,展示如何使用VB的FSO来获取文件夹中的所有文件和子文件夹: ```vb Dim fso As Object Dim folder As Object Dim file As Object Dim wordApp As Object Dim wordDoc As Object Set fso = ...

    java技术文档 常用类和经典应用

    Java语言基础.pdf Math类的常用方法.pdf String与StringBuffer.pdf Vector类的用法.pdf 迭代器Iterator的用法.pdf 反射机制.pdf 访问路经问题.pdf 基于MVC和RMI的分布.pdf 经典的查询方式.pdf 经典的显示方法.pdf ...

    Netty+H5实现实时进度条文件上传,支持断点续传

    Netty+H5实现实时进度条文件上传,支持断点续传。 1、WebSocketServer:服务启动类 2、服务启动后,浏览器访问http://localhost:9999 3、FileWebSocketFrameHandler类SERVER_SAVE_PATH常量为文件上传保存路经

    输油管道问题的Java实现的代码

    从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的...

    ubuntu常用终端命令.docx

    使用方法:mount -t 文件系统类型 设备路经 访问路经。 6. umount 命令:用于卸载文件系统。使用方法:umount /mnt/cdrom。 文件权限命令 1. chmod 命令:用于更改文件的权限。使用方法:chmod u+s 文件、chmod g+...

    java jdbc 连接数据库

    功能介绍: 需手动导入驱动包mysql-connector-java-...JdbcSingleUtils.java 是单利模式创建连接对象 JdbcUtils.java 静态类方式创建连接对象 注意数据库连接账户密码 包内有anbyke.sql数据库文件 运行方法: 简单...

    人工神经网络Hopfield算法解决TSP最佳路径问题

    人工神经网络(Artificial Neural Networks, ANN)是模拟生物神经元结构的一种计算模型,它在解决复杂优化问题方面表现出强大的能力。Hopfield网络是ANN的一个重要分支,由John J. Hopfield于1982年提出,主要用于...

    .net core 2.1 使用UEditor上传图片资源服务器

    在wwwroot/lib/ueditor里面 页面你是可以随便改的必要的留着就行 web项目里资源文件中ueditor.config.js里面的统一的请求路径前面必须加上图片服务器的路经 以上面为例http://127.1.1.1:80/api/UEditor 记得添加...

    java源码路径-lein-javac-resources:从:java-source-paths复制资源以编译路径

    该插件旨在用于具有遗留Java代码库的项目,其中资源文件与Java源文件一起放置。 用法 将插件包括在project.clj的:plugins矢量中: :plugins [[lein-javac-resources " 0.1.1 " ]] :omit-source true ; excludes ....

    Linux常用命令手册.doc

    4. 磁盘挂载: mount -t 文件系统类型 设备路经 访问路经。 文件权限 1. 文件权限修改: chmod u+s file 为 file 的属主加上特殊权限。 chmod g+r file 为 file 的属组加上读权限。 chmod o+w file 为 file 的其它...

    方便的Linux手册,自己整理的

    13. find 命令:用于查找路经所在范围内满足字符串匹配的文件和目录。 14. ln 命令:用于创建硬链接或符号链接。 磁盘管理 1. df 命令:用于报告文件系统的总容量、使用量和剩余容量。 2. du 命令:用于查看目录的...

    Linux常用命令手册大全.zip

    文件管理 # pwd pwd 查看当前所在目录的绝对路经 文件管理 # cd cd .. 回当前目录的上一级目录 文件管理 # cd cd - 回上一次所在的目录 文件管理 # cd cd ~ 或 cd 回当前用户的宿主目录 文件管理 # cd cd ~...

    超级方便的linux命令手册

    6. mount -t 文件系统类型 设备路经 访问路经:挂载文件系统。 7. umount /mnt/cdrom:卸载/mnt/cdrom为空。 文件权限 1. chmod u+s 文件:为文件的属主加上特殊权限。 2. chmod g+r 文件:为文件的属组加上读权限...

    爱妮网络-MTV视听无限Pro v3.1

    更新说明:1,隐藏了播放文件的路经以GetMtvUrl.ijun?id=1005的形试2,后台作了全部的美化动作,3,增加的用户功能4,增加了歌手管理的功能5,修改了后台搜索歌曲时直接转到修改页面,现以列表的形试显示,可以选取...

    山大数据结构实验大纲及代码

    代码文件通常包括: 1. 数据结构的实现:如数组、链表、树等的定义和操作函数,展示了数据结构在实际编程中的具体形式。 2. 算法实现:如快速排序、归并排序、堆排序、二分查找、广度优先搜索、深度优先搜索等,...

Global site tag (gtag.js) - Google Analytics