`

Java语言中的路径基础知识(总是忘,记录下)

    博客分类:
  • Java
 
阅读更多
Java中路径知识

一、换行符
换行(\n)就是光标下移一行却不会移到这一行的开头。

二、回车符
回车(\r)就是回到当前行的开头却不向下移一行。
Enter键按下后会执行\n\r这样就是我们看到的一般意义的回车了,所以你用16进制文件查看方式看一个文本,就会在行尾发现"\r\n"。

三、制表符
Tab是制表符,就是"\t",作用是预留8个字符的显示宽度,用于对齐。

四、System.getProperties()当前系统属性
1)file.separator
文件分隔符,在Windows系统中是“\”,在UNIX系统中是“/”。
在代码中也可以这样获取:
System.out.println("文件分隔符:"+System.getProperty("file.separator"));
System.out.println("文件分隔符:"+File.separator);


2)path.separator
路径分隔符,在Windows系统中是“;”即分号,在UNIX系统中是“:”即冒号。
在代码中也可以这样获取:
System.out.println("路径分隔符:"+System.getProperty("path.separator"));
System.out.println("路径分隔符:"+File.pathSeparator);


3)line.separator
行分隔符,在Windows系统中是“\r\n”;而在在UNIX系统中是“/n”即换行符。
在代码中也可以这样获取:
System.out.println("行分隔符:"+System.getProperty("line.separator"));


4)user.name
用户的账户名称

5)user.home
用户的主目录

6)user.dir
用户的当前工作目录
在代码中也可以这样获取:
System.out.println(System.getProperty("user.dir"));


五、Class.getResource与ClassLoader.getResource用法与区别
工程根目录
        |-com.cn.test
                    |-Test.class
                    |-test2.txt 
        |-test1.txt

1)利用Class.getResource方法来获取资源的时候,路径写法有两种
URL url1 = this.getClass().getResource("test2.txt"); 
 

//注意这种写法中,路径必须以“/”开头,且从工程根目录开始查找
URL url2 = this.getClass().getResource("/com/cn/test/test2.txt"); 


当采用this.getClass().getResource("test2.txt")这种写法时,getResource方法会自动的在路径test2.txt的前面加上当前类的包路径,比如:com/cn/test/test2.txt,然后根据此路径来查找资源。

当采用this.getClass().getResource("/com/cn/test/test2.txt")这种写法时,getResource方法会自动的将路径/com/cn/test/test2.txt最前面的“/”去掉,变为com/cn/test/test2.txt后,然后根据此路径进行查找。

也就是说Class.getResource方法要么是根据当前类路径进行查找,要么是一绝对路径方式,从根目录进行查找。

2)利用ClassLoader.getResource方法来获取资源,就没有上面的这么麻烦,只有一种写法。
//注意这种写法中,路径前面没有“/”
this.getClass().getClassLoader().getResource("test1.txt"); 

ClassLoader.getResource方法的路径不需要以“/”开头,但是该方法默认从项目根目录开始查找。

这么看来ClassLoader.getResource方法的用法与this.getClass().getResource("/com/cn/test/test2.txt")这种写法其实是一样的。

为什么呢?我们来看下this.getClass().getResource方法的源码:
 public java.net.URL getResource(String name) {
        name = resolveName(name);
        ClassLoader cl = getClassLoader0();
        if (cl==null) {
            // A system class.
            return ClassLoader.getSystemResource(name);
        }
        return cl.getResource(name);
    }


resolveName方法最主要的工作就是,给以“/”开头的name,去掉“/”。给不是以“/”开头的那么,增加当前类的包路径。比如,当name为/com/cn/test/test2.txt时,经过resolveName方法处理后,就变成了com/cn/test/test2.txt。

而一般的类都是由“系统类加载器”加载的,也就是getClassLoader0()方法得到的ClassLoader cl一般都是空。

这样就导致该方法实际上是通过ClassLoader.getSystemResource(name)方法得到的“系统类加载器”的getResource(name)方法查找的资源,也就是说是通过ClassLoader.getResource("com/cn/test/test2.txt")方法查找的资源。

这样就刚好解释了ClassLoader.getResource("com/cn/test/test2.txt")和this.getClass().getResource("/com/cn/test/test2.txt")都能查找到test2.txt的原因了
分享到:
评论

相关推荐

    java 语言最短单元路径

    根据给定的文件信息,我们可以深入探讨Java编程语言中实现最短路径算法的相关知识点,特别是Dijkstra算法在图论中的应用。尽管代码片段中的注释是用非标准符号表示的,但通过分析代码结构和变量命名,我们可以推断出...

    经典小游戏的java语言源代码

    总的来说,这个“经典小游戏的java语言源代码”集合是一个宝贵的教育资源,它能帮助我们巩固Java基础知识,理解面向对象编程,掌握GUI开发,学习多线程和算法应用,并且培养良好的编程习惯。通过亲手实现和调试这些...

    java地图最短路径源程序

    这里我们将深入探讨Java实现地图最短路径算法的相关知识点。 首先,最短路径问题通常涉及到图论中的算法,比如Dijkstra算法或A*搜索算法。Dijkstra算法是一种单源最短路径算法,适用于所有边非负权的情况,而A*算...

    java语言快速入门习题与答案

    ### Java语言快速入门知识点详解 #### 一、Java的跨平台特性 - **知识点解析**:Java语言的一个显著特点是其跨平台能力。这意味着编写的Java程序可以在任何支持Java虚拟机(JVM)的操作系统上运行而无需修改。Java的...

    Java学习路径(二) 书籍篇.txt

    《Thinking in Java》并非一本系统地介绍Java语言全貌的教程书,而是采用了一种跳跃式的写作风格,更像是一个技巧集锦,它深入分析并解释了Java中的许多关键概念和技术细节。 #### 如何正确利用《Thinking in Java...

    指定文件路径下所有文件名和路径

    在IT行业中,文件路径操作是基础且至关重要的技能,特别是在处理大量数据或自动化任务时。标题"指定文件路径下所有文件名和路径"所指的知识点主要涉及如何遍历一个目录及其子目录,获取其中所有文件的名称和它们完整...

    Java电话记录辅助系统

    【Java电话记录辅助系统】是一种基于Java编程语言开发的应用程序,专为管理和分析电话通信记录而设计。系统可能包括各种功能,如通话记录导入、数据分析、通话时长统计、通话频率分析、联系人管理等,旨在提高个人或...

    关于Java的个人学习记录

    Java是一种高级编程语言,它的运行机制融合了编译型和解释型的特点。在Java的世界里,程序员编写的是源代码,通常以.java文件的形式存在。...了解和掌握这些基础知识,对于深入学习和使用Java至关重要。

    java入门基础学习笔记

    这些基础知识包括了Java语言的特性、程序的编写和运行流程、环境的搭建和配置、编程元素(如关键字、标识符、数据类型、注释等)的使用以及基本的输入输出操作和进制转换等。通过这些基础知识的学习,可以帮助初学者...

    JAVA毕业实习日志.docx

    通过实习,作者逐渐熟悉了JAVA语言的基础知识,并了解了软件开发的基本概念。 实习第一天 作者抵达实习基地,并遇到了久别的同学们。在实习基地的组织人员为他们进行了一个简洁的实训典礼,介绍了实训期间应当遵守...

    Java语言程序设计实验指导书.pdf

    本实验指导书主要针对初学者,旨在通过一系列实践操作帮助学生快速掌握Java语言的基础知识和编程技巧。 实验一重点在于JDK(Java Development Kit)的安装与环境配置。JDK是开发和运行Java程序的基础,其中包含了...

    java opencv 调用摄像头实现拍照及本地保存 支持上传FTP 路径配置

    在这个项目中,Java是主要的编程语言,用于编写控制摄像头、处理图像以及与FTP服务器交互的代码。 2. **OpenCV**: OpenCV(开源计算机视觉库)是一个强大的计算机视觉和机器学习库,支持多种编程语言,包括Java。在...

    《个人Java学习记录》pdf版

    ### 《个人Java学习记录》知识点总结 #### 一、Java语言特性与注意事项 1. **Java语言的大小写敏感性** - **概念解析**:Java是一种区分大小写的编程语言,这意味着`java`和`Java`被视为不同的标识符。在Java...

    java语言编写的电子迷宫小程序

    总的来说,这个“java语言编写的电子迷宫小程序”是一个集成了多种Java编程技术的项目,涵盖了基础的编程概念到更高级的算法和数据结构应用。对于学习者来说,这是一个极好的实践平台,可以帮助他们深化对Java编程的...

    java知识复习总结

    Java语言设计时强调简单性和安全性。例如,它不支持指针操作,而是使用引用,这减少了内存管理错误的可能性。同时,Java禁止类的多继承,以避免复杂的继承关系,确保类的继承结构清晰。Java还引入了垃圾回收机制,...

    Java学习从入门到精通 学习路径指点

    Java语言以其简洁和高效著称,主要依赖于两大部分:JVM(Java虚拟机)的内存管理和Class Loader机制。理解这两点,能帮助我们解决大部分与对象和配置相关的问题。 1. JVM的内存管理: JVM内存管理主要包括堆内存、...

    javademo的使用

    JavaDemo的使用主要涵盖了一系列Java编程的基础练习,旨在帮助开发者熟悉和巩固Java语言的基本语法、数据类型以及控制结构。在Java编程中,基础是至关重要的,因为它是构建复杂应用程序的基石。下面我们将深入探讨...

Global site tag (gtag.js) - Google Analytics