【IO流】java中文件路径(相对路径、绝对路径)相关类及方法
原文链接:https://blog.csdn.net/Activity_Time/article/details/98034409
1. URL
菜鸟教程:Java URL处理
通常推荐对http等协议进行使用,若操作(file:)部分属性将无意义,建议getFile()。


相关:URLConnections 类 可以打开连接进行IO
- 通过getResource方法可以获得相对于classPath的文件的URL

2. File
菜鸟教程:Java File类
JAVA基础知识之IO-File类
路径测试代码:
@Test
void test7() throws IOException {
String dirname = "./file.txt";
File f1 = new File(dirname);
if (f1.isDirectory()) {
System.out.println(dirname + " is a directory");
} else {
System.out.println(dirname + " is not a directory");
}
System.out.println("CanonicalPath:" + f1.getCanonicalPath());
System.out.println("AbsolutePath :" + f1.getAbsolutePath());
System.out.println("Path :" + f1.getPath());
}
"./file.txt" :输出结果
./file.txt is not a directory
CanonicalPath:E:\a\MyFilesNoCh\JAVA\eclipse-jee-2018-09-win32-x86_64-Spring-Hibernate\ClassPathTest\file.txt
AbsolutePath :E:\a\MyFilesNoCh\JAVA\eclipse-jee-2018-09-win32-x86_64-Spring-Hibernate\ClassPathTest.\file.txt
Path :.\file.txt
"/file.txt" :输出结果
/file.txt is not a directory
CanonicalPath:E:\file.txt
AbsolutePath :E:\file.txt
Path :\file.txt
"file.txt" :输出结果
file.txt is not a directory
CanonicalPath:E:\a\MyFilesNoCh\JAVA\eclipse-jee-2018-09-win32-x86_64-Spring-Hibernate\ClassPathTest\file.txt
AbsolutePath :E:\a\MyFilesNoCh\JAVA\eclipse-jee-2018-09-win32-x86_64-Spring-Hibernate\ClassPathTest\file.txt
Path :file.txt
- 结论
CanonicalPath返回全路径,但不会包含../.等符号AbsolutePath返回全路径,会包含../.等符号- 使用
/开头,会从磁盘根目录开始索引 - 不使用
/开头,会从eclipse项目根目录开始索引
- 【4.该方法不可实用,在生产环境中结果难以预料,建议总是以classPath类资源根目录进行定位】关于java/Web中配置文件读取路径(classPath与类加载器的关系/Resource),以及读取Properties文件的方法
getPath返回的是对象创建是的路径参数
3. Path
Java7中文件IO发生了很大的变化,专门引入了很多新的类:
import java.nio.file.DirectoryStream;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
其中Path在功能上可以说和原来的File相似,包含了各种路径处理操作,而新的File及其相关类Files可以说是包含了绝大多数的文件操作方法,比如创建、复制、遍历、重命名、权限、可否执行等。。。也可以直接获取流对象。

[二] JavaIO之File详解 以及FileSystem WinNTFileSystem简介
java Files类和Paths类的用法 (转)

URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
FileSystem到底是什么?
操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。
说白了又是接口来实现统一,不同的操作系统实现这个接口,就可以提供统一的表现形式
FileSystem是一个抽象类 ,
windows下的实现类为:WinNTFileSystem,在IDE中可以直接找到
可能你只是找到了一个WinNTFileSystem,只有一个要接口还有什么意思?
如果你目前只看到了一个WinNTFileSystem 那说明你在Windows下
WinNTFileSystem类 和 UnixFileSystem类并不是在同一个 JDK 里面,也就是说它们是分开的
你只能在 Windows 版本的 JDK 中找到 WinNTFileSystem,而在 Linux 版本的 JDK 中找到 UnixFileSystem
同样地,其他操作系统也有自己的文件系统实现类。
参考文章:
file的getPath getAbsolutePath和getCanonicalPath的不同
【IO流】java中文件路径(相对路径、绝对路径)相关类及方法的更多相关文章
- java中文件的I/O操作
java中文件的读写操作 (一) (1)java中文件的字节转成字符读操作 FileInputStream fStream = new FileInputStream("test.txt&q ...
- JAVA中文件与Byte数组相互转换的方法
JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...
- java中多线程执行时,为何调用的是start()方法而不是run()方法
Thead类中start()方法和run()方法的区别 1,start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状 ...
- JAVA 中两种判断输入的是否是数字的方法__正则化_
JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
- Java中的集合(十四) Map的实现类LinkedHashMap
Java中的集合(十四) Map的实现类LinkedHashMap 一.LinkedHashMap的简介 LinkedHashMap是Map接口的实现类,继承了HashMap,它通过重写父类相关的方法 ...
- java中文件的相对路径以及jar中文件的读取
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...
随机推荐
- Nginx+Tomcat Session 无效问题
omcat 和 Nginx 是相互独立的,在创建 Session 的时候,会根据部署的 Path 作为 Session Cookie 的 Path 路径,原则就是解决 Session Path 路径问 ...
- vim可视模式
参考: http://xw2423.byr.edu.cn/blog/archives/232 http://www.pythonclub.org/linux/vim/visual-mode Vim的多 ...
- git使用记录八:不同提交的指定文件的差异
不同提交的指定文件的差异 git diff commit-id1 commit-id2 path-to-filename
- 利用select单线程点对点聊天
select的优点与使用方法 select用单线程的方法遍历所有待读写的I/O接口, 当有接口可用时就会返回. select可设置电脑阻塞或非阻塞. 特别注意: 每次select前都要重新初始化集合和 ...
- ctDNA的分析理论上也可以为多样性的肿瘤
导语 肺腺癌(LUAD)和肺鳞癌(LUSC)是最常见的非小细胞肺癌类型.循环肿瘤DNA(ctDNA)是由凋亡或坏死的肿瘤细胞释放并在血液中循环的小片段DNA.与常规肿瘤活检相比,ctDNA检测具有一定 ...
- 洛谷 P1111 修复公路——并查集
先上一波链接qwq https://www.luogu.org/problem/P1111 这题就是裸的并查集咯qwq 维护一下连通块的数目 数目变为一的时候整个图就连通了 输出此时的答案就okay拉 ...
- java并发编程之美-阅读记录10
同步器 10.1CountDownLatch 在开发过程中经常会遇到在主线程中开启多个子线程去并行执行任务,并且主线程需要等待子线程执行完毕后在进行汇总.在CountDownLatch出现之前使用线程 ...
- python3学习笔记——数字、字符串、列表、字典、元组
什么是python解释器? python代码在解释器中运行.解释器是代码与计算机硬件之间的软件逻辑层. python的执行过程 ...
- Mybatis+Springmvc+Spring整合常用的配置文件
1.创建web项目 2.导入mabatis spring springnvc 需要的jar包 3.创建mybatis,spring,springmvc的配置文件 (1)web.xml配置文件 < ...
- 深入学习Redis主从复制
一.主从复制概述 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前者称为主节点(master),后者称为从节点(slave):数据的复制是单向的,只能由主节点到从节点. 默 ...