zoukankan      html  css  js  c++  java
  • 【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:aMyFilesNoChJAVAeclipse-jee-2018-09-win32-x86_64-Spring-HibernateClassPathTestfile.txt
    AbsolutePath :E:aMyFilesNoChJAVAeclipse-jee-2018-09-win32-x86_64-Spring-HibernateClassPathTest.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:aMyFilesNoChJAVAeclipse-jee-2018-09-win32-x86_64-Spring-HibernateClassPathTestfile.txt
    AbsolutePath :E:aMyFilesNoChJAVAeclipse-jee-2018-09-win32-x86_64-Spring-HibernateClassPathTestfile.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的不同

  • 相关阅读:
    prototype 和function关系等总结
    js作用域的几个问题
    关于对象引用的作用域
    深刻理解下js的prototype
    如何判断一个对象是数组
    理解js的几个关键问题(2): 对象、 prototype、this等
    更新触发器
    sql事物和try catch
    图片与base64编码互换
    UCML点击BPO报异常
  • 原文地址:https://www.cnblogs.com/ACTIM/p/11308886.html
Copyright © 2011-2022 走看看