`

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语言的算法菜鸡成长记录与设计源码分享”,它不仅是一个实践性的学习平台,更是一个帮助算法新手逐步成长为行家的有效工具。项目中包含了227个文件,这些文件主要涵盖了三个部分:首先是129个...

    Java电话记录辅助系统

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

    关于Java的个人学习记录

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

    《Java语言编程基础立体化实用教程》1-6+学生成绩查询与写入文件功能.ppt

    Java语言编程基础实用教程的学生成绩查询与写入文件功能主要介绍了如何在字符界面环境下实现学生信息的录入、查询以及将查询结果写入文件的过程。在该教程中,学习者将掌握以下知识点: 1. Java中字符界面程序设计...

    java入门基础学习笔记

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

    JAVA毕业实习日志.docx

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

    基于Java的Java布局路径设计源码与小游成长历程分享

    项目中的Java源文件数量最多,2133个,这表明了项目的核心技术是Java语言,涉及的方面包括但不限于Java基础语法、类库使用、框架应用等。XML配置文件的大量使用,显示了该项目在结构化数据管理上的需求,可能涉及到...

    基于Java语言的经典编程题目设计源码

    其中,Java语言因其强大的跨平台特性、丰富的类库和广泛的应用领域,一直备受青睐。而如何系统地提升Java编程技能,成为了许多开发者思考的问题。针对这一需求,"基于Java语言的经典编程题目设计源码"项目应运而生。...

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

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

    基于Java语言的全方位Java学习与探索设计源码

    在这个资源包中,Java源文件数量最多,共有276个,它们是学习Java基础知识和深入理解Java编程的核心。这些源文件不仅包括了简单的示例程序,也涵盖了复杂的算法实现,使得学习者能够从基础到高级逐步提升编程技能。 ...

    基于Java语言的程序员成长笔记与设计源码分享

    该项目收录了众多Java相关的学习资料,其内容丰富,涵盖了从基础知识到高级应用的多个层面,为程序员的成长提供全面的参考和学习资源。通过2211个文件的庞大体量,项目不仅包含了实用的设计源码,还有大量图像文件,...

    基于Java语言的简易版Spring框架设计源码学习记录

    这个基于Java语言的简易版Spring框架设计源码学习记录不仅是一个学习Spring框架的工具,它还是一个引导开发者深入了解Java语言高级特性和设计模式的辅助材料。通过分析源码和学习笔记,开发者可以提升自己的技术栈,...

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

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

Global site tag (gtag.js) - Google Analytics