`
jackyhongvip
  • 浏览: 159634 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

简单的路径使用(转)

    博客分类:
  • j2se
 
阅读更多
用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file = new File("c:/test.txt");这样用有什么问题,相信大家都知道,就是路径硬编码,对于JAVA精神来说,应用应该一次成型,到处可用,并且从现实应用来讲,最终生成的应用也会部署到Windows外的操作系统中,对于linux来说,在应用中用了c:/这样的字样,就是失败,所以,我们应该尽量避免使用硬编码,即直接使用绝对路径。



  在Servlet应用中,有一个getRealPath(String str)的方法,这个方法尽管也可以动态地获得文件的路径,不秘直接手写绝对路径,但这也是一个不被建议使用的方法,那么,我们有什么方法可以更好地获得文件呢?



      那就是Class.getResource()与Class.getResourceAsStream()方法,但很多人还是不太懂它的用法,因为很多人(比如不久前的我)都不知道应该传怎么样的参数给它,当然,有些人己经用得如火纯青,这些人是不需要照顾的,在此仅给不会或者还不是很熟的人解释一点点。





比如我们有以下目录

|--project

    |--src

        |--javaapplication

            |--Test.java

            |--file1.txt

        |--file2.txt

    |--build

        |--javaapplication

            |--Test.class

            |--file3.txt

        |--file4.txt



在上面的目录中,有一个src目录,这是JAVA源文件的目录,有一个build目录,这是JAVA编译后文件(.class文件等)的存放目录

那么,我们在Test类中应该如何分别获得

file1.txt  file2.txt  file3.txt  file4.txt这四个文件呢?



首先讲file3.txt与file4.txt

file3.txt:

方法一:File file3 = new File(Test.class.getResource("file3.txt").getFile());

方法二:File file3 = new File(Test.class.getResource("/javaapplication/file3.txt").getFile());

方法三:File file3 = new File(Test.class.getClassLoader().getResource("javaapplication/file3.txt").getFile());



file4.txt:

方法一:File file4 = new File(Test.class.getResource("/file4.txt").getFile());

方法二:File file4 = new File(Test.class.getClassLoader().getResource("file4.txt").getFile());



很好,我们可以有多种方法选择,但是file1与file2文件呢?如何获得?

答案是,你只能写上它们的绝对路径,不能像file3与file4一样用class.getResource()这种方法获得,它们的获取方法如下

假如整个project目录放在c:/下,那么file1与file2的获取方法分别为

file1.txt

方法一:File file1 = new File("c:/project/src/javaapplication/file1.txt");

方法二:。。。没有



file2.txt

方法一:File file2 = new File("c:/project/src/file2.txt");

方法二:。。。也没有



总结一下,就是你想获得文件,你得从最终生成的.class文件为着手点,不要以.java文件的路径为出发点,因为真正使用的就是.class,不会拿个.java文件就使用,因为java是编译型语言嘛



至于getResouce()方法的参数,你以class为出发点,再结合相对路径的概念,就可以准确地定位资源文件了,至于它的根目录嘛,你用不同的IDE build出来是不同的位置下的,不过都是以顶层package作为根目录,比如在Web应用中,有一个WEB-INF的目录,WEB-INF目录里面除了web.xml文件外,还有一个classes目录,没错了,它就是你这个WEB应用的package的顶层目录,也是所有.class的根目录“/”,假如clasaes目录下面有一个file.txt文件,它的相对路径就是"/file.txt",如果相对路径不是以"/"开头,那么它就是相对于.class的路径。。



还有一个getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,再new InputStream(file)一样的结果


原link找不到了。。
分享到:
评论

相关推荐

    下载路径转换,可用于各种下载路径的转换,如迅雷,旋风,快车

    通过理解这个过程并选择适合自己的方法,无论是简单的修改设置还是使用自动化工具,都可以让文件管理变得更加轻松。对于那些不熟悉技术的用户,建议先从修改软件设置开始,随着对电脑操作的熟练,逐渐尝试更高级的...

    基于距离转换的栅格地图路径规划

    总的来说,基于距离转换的栅格地图路径规划是一种实用的方法,它结合了简单的环境表示和高效的路径搜索策略。在Matlab中,通过灵活的编程环境和丰富的数学函数库,可以便捷地实现和调试这类算法,从而在各种场景下...

    windows下tree命令生成的文件解析为绝对路径的工具

    不过,对于非编程人员来说,使用Excel可能会比较复杂,所以也可以考虑编写一个简单的脚本或程序,比如使用Python或批处理文件,自动完成这个转换,这样会更高效且易于维护。 在处理类似问题时,了解基本的文件系统...

    html5 中视频路径问题解决

    本文将详细介绍如何通过简单的代码实现从绝对路径到相对路径的有效转换,并提供一个具体的示例来帮助读者理解和应用这些知识。 #### 绝对路径与相对路径的概念 1. **绝对路径**:指定了完整的文件位置,包括服务器...

    连接ACCESS绝对路径相对路径.txt

    根据提供的文件信息,本文将详细解释如何在C#中连接Access数据库,并且会重点讨论绝对路径与相对路径的使用方式。 ### 连接ACCESS绝对路径与相对路径 #### 使用C#连接Access数据库 在C#中连接Access数据库,通常...

    3dMax物体跟随到路径

    线条工具允许你画出简单的直线路径,而样条线工具则提供更多的曲线控制,能够创建更复杂的路径形状。 接下来,选择你要跟随路径的对象,然后在“修改器堆栈”(Modifier Stack)中添加“路径约束”修改器。在这里,...

    keil头文件路径设置

    3. 转到C/C++ Compiler选项卡,在Include Paths字段中添加头文件的路径。 4. 确认路径前加上'.\'或'..\',根据路径相对于项目的相对位置来调整。 例如,如果项目文件位于`E:\keil_project`,而头文件位于`E:\keil_...

    javascript将相对路径转绝对路径示例

    通过上述内容,我们可以看到,虽然将相对路径转换为绝对路径在概念上比较简单,但在实际操作中涉及到的技术细节较多,包括路径解析规则、浏览器兼容性处理以及对性能的考虑等。正确掌握这些知识点,对于开发出高效、...

    路径与形状技术

    在使用过程中,按住Shift键可限制路径的角度,使其只能沿着45°、水平或垂直方向绘制,这对于需要遵循特定角度的设计非常有用。同时,按住Ctrl键可以临时切换到直接选择工具,允许调整单个锚点的位置。 在创建路径...

    路径编辑器转PathCreator

    首先,PathCreator提供了直观的界面和工作流程,使得在Unity编辑器中创建路径变得简单易行。用户可以通过点击场景中的各个点来定义路径节点,然后连接这些节点以形成平滑的曲线。这一特性对于游戏中的角色移动路径、...

    C#读取IIS网站物理路径

    以上内容详细介绍了C#中读取IIS网站物理路径的基本方法,包括`HttpServerUtility.MapPath`和`Microsoft.Web.Administration`库的使用。在实际项目中,理解这些概念和技术将有助于更有效地管理和操作IIS上的Web应用...

    C# DllImport用法和路径问题 .docx

    下面是一个简单的使用示例,展示如何使用`DllImport`调用一个Windows API函数来写入INI文件: ```csharp using System; using System.Runtime.InteropServices; class Program { [DllImport("kernel32")] ...

    android图片文件的路径地址与Uri的相互转换方法

    在 Android 中,我们可以使用 ContentResolver 将图片文件的路径地址转换为 Uri。下面是一个简单的示例代码: ```java String path = "/sdcard/image.jpg"; ContentResolver cr = getContentResolver(); Uri uri = ...

    webp格式一键转小图片,拖入即转成功,保留原文件名称,扩展名可选(jpg,png),路径可选(默认原路径)非常方便,一次一个

    使用方法超简单,把您的webp文件直接拖入到LOGO的位置,松开即转。 文件大小:204kb 纯绿色软件。 C#语言开发,有时间加入图片转webp格式,和网络地址直接转换等功能,目前够用了。 更多小工具关注我!谢谢

    ASP.NET 网站路径 目录处理

    本文将详细探讨网站中指定资源路径的方法,包括绝对路径与相对路径的区别及其使用方式,并介绍如何利用`HttpContext`对象进行路径处理。 #### 绝对路径与相对路径的比较 1. **绝对路径**:指的是从网站根目录出发...

    Service.MapPath相对路径

    1. **页面内资源引用**:对于位于同一目录或其子目录下的资源,使用简单相对路径可以简化路径设置。 2. **局部资源引用**:当只需要引用当前页面所在目录或其子目录下的资源时,简单相对路径是最佳选择。 ### 总结 ...

    Java中获得路径

    了解并熟练使用这些路径处理方法对于进行文件操作和资源管理至关重要,无论是简单的打印路径还是执行更复杂的文件系统操作。在实际开发中,我们还需要关注路径的平台兼容性,因为不同的操作系统可能使用不同的分隔符...

    细化算法及其在路径规划应用

    在路径规划领域,细化算法通过将复杂的环境简化为更简单的几何形状,进而更容易地计算出有效的路径。 #### 二、细化算法在路径规划中的应用 路径规划是机器人导航的关键技术之一,涉及如何寻找从起点到终点的有效...

    路径分隔符在编程中的注意事项

    路径分隔符看似简单,但在实际编程中却常常成为导致程序出现异常甚至崩溃的原因之一。通过理解不同操作系统之间的差异并采取相应的预防措施,开发者可以有效地避免这些问题,从而提高软件的质量和稳定性。希望本文能...

    java使用OpenOffice实现的Excel转pfd

    3. **文件输入与输出**:指定待转换的Excel文件路径和目标PDF文件的输出路径。在Java中,可以使用`java.io.File`类来表示文件对象。 4. **执行转换**:使用JODConverter提供的API,如`convert()`方法,将Excel文件...

Global site tag (gtag.js) - Google Analytics