原文链接: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

  • 结论
  1. CanonicalPath返回全路径,但不会包含../.等符号
  2. AbsolutePath返回全路径,会包含../.等符号
  3. 使用/开头,会从磁盘根目录开始索引
  4. 不使用/开头,会从eclipse项目根目录开始索引
  1. 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的不同

最新文章

  1. UITextFeild的用法
  2. 关于jQuery中环境配置中的问题
  3. js无间隙滚动
  4. velocity 显示List和Map方法
  5. 『.Net』微软家的女儿们
  6. Palindrome Partitioning
  7. Verilog-1995 VS Verilog-2001
  8. STL algorithm算法merge(34)
  9. Session和Cookie的学习笔记2
  10. linux----定义命令别名
  11. 结构-行为-样式-requireJs实现图片轮播插件
  12. CAPSPageMenu分页交互
  13. Ubuntu离线安装VSCode(附带前期准备工作)
  14. IPv4 forwarding is disabled. Networking will not work_问题解决
  15. zkclient中包引用不对,导致NoSuchMethodError
  16. 报表工具-ECharts 特性介绍
  17. URLs ...
  18. Saku实力挖坑记!!(十八)
  19. linux进程内存布局
  20. 读/写锁的实现和应用(高并发状态下的map实现)

热门文章

  1. git---从已有分支拉出新分支
  2. web测试点
  3. HMTL5滑动块研究
  4. asciinema.org -Record Your Terminal Share it with no fuss
  5. hdu3438 Buy and Resell(优先队列+贪心)
  6. Java开发中的23种设计模式详解(2)结构型
  7. IDA技巧
  8. Sass-属性嵌套
  9. jq的ajax请求更改为axios请求时零碎总结
  10. Jenkins配置定时构建项目