Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

15.10. 路径操作汇总

15.10.1. 获得 Resource 下文件路径

		
String path = Main.class.getClassLoader().getResource("netkiller-config.yaml").getPath();
String path = Main.class.getClassLoader().getResource("netkiller-config.yaml").getPath();
		
			

15.10.2. URI/相对/拒绝/路径/文件

			
package cn.netkiller.test;

import java.io.File;

public class Test {


    public Test() {
    }
    
    public static void main(String[] args) throws Exception {
        String path = "src/java/resources";
        File file = new File(path);
        System.out.println("toURI: " + file.toURI());
        System.out.println("toURL: " + file.toURI().toURL());

        System.out.println("getParent: " + file.getParent());
        System.out.println("getParentFile: " + file.getParentFile());

        System.out.println("getAbsolutePath: " + file.getAbsolutePath());
        System.out.println("getAbsoluteFile: " + file.getAbsoluteFile());

        System.out.println("getCanonicalPath: " + file.getCanonicalPath());
        System.out.println("getCanonicalFile: " + file.getCanonicalFile());

        System.out.println("getPath: " + file.getPath());
        System.out.println("getName: " + file.getName());

        System.out.println("getFreeSpace: " + file.getFreeSpace());
        System.out.println("getTotalSpace: " + file.getTotalSpace());
        System.out.println("getUsableSpace: " + file.getUsableSpace());
    }

}
			
			

输出结果

			
toURI: file:/Users/neo/workspace/watch/src/java/resources
toURL: file:/Users/neo/workspace/watch/src/java/resources
getParent: src/java
getParentFile: src/java
getAbsolutePath: /Users/neo/workspace/watch/src/java/resources
getAbsoluteFile: /Users/neo/workspace/watch/src/java/resources
getCanonicalPath: /Users/neo/workspace/watch/src/java/resources
getCanonicalFile: /Users/neo/workspace/watch/src/java/resources
getPath: src/java/resources
getName: resources
getFreeSpace: 0
getTotalSpace: 0
getUsableSpace: 0			
			
			

15.10.3. URL 操作汇总

			
package cn.netkiller.test;

import java.io.InputStream;
import java.net.URL;

public class Test {
    public Test() {
    }

    public static void main(String[] args) throws Exception {

        URL url = new URL("https://neo:password@www.netkiller.cn/linux/index.html?id=1&cid=2#openssh");

        System.out.println("getProtocol: " + url.getProtocol());
        System.out.println("getUserInfo: " + url.getUserInfo());
        System.out.println("getHost: " + url.getHost());
        System.out.println("getDefaultPort: " + url.getDefaultPort());
        System.out.println("getFile: " + url.getFile());

        System.out.println("getPath: " + url.getPath());
        System.out.println("getQuery: " + url.getQuery());
        System.out.println("getRef: " + url.getRef());

        System.out.println("getAuthority: " + url.getAuthority());
        System.out.println("toExternalForm: " + url.toExternalForm());
        System.out.println("toURI: " + url.toURI());

        InputStream inputStream = (InputStream) url.getContent();
        System.out.println("getContent: " + new String(inputStream.readAllBytes()));

    }

}
			
			

结果输出

			
getProtocol: https
getUserInfo: neo:password
getHost: www.netkiller.cn
getDefaultPort: 443
getFile: /linux/index.html?id=1&cid=2
getPath: /linux/index.html
getQuery: id=1&cid=2
getRef: openssh
getAuthority: neo:password@www.netkiller.cn
toExternalForm: https://neo:password@www.netkiller.cn/linux/index.html?id=1&cid=2#openssh
toURI: https://neo:password@www.netkiller.cn/linux/index.html?id=1&cid=2#openssh
getContent: <?xml version="1.0" encoding="UTF-8" standalone="no"?>			
			
			

15.10.4. nio 路径库

			
package cn.netkiller.test;

import java.nio.file.Path;
import java.nio.file.Paths;

public class Test {
    public Test() {
    }

    public static void main(String[] args) throws Exception {

        Path resourceDirectory = Paths.get("src", "main", "resources");
        System.out.println("toURL: " + resourceDirectory.toUri().toURL());
        System.out.println("getParent: " + resourceDirectory.getParent());
        System.out.println("getFileName: " + resourceDirectory.getFileName());

        System.out.println("-".repeat(20));

        Path directory = Paths.get("src/java/resources");
        System.out.println("toURL: " + directory.toUri().toURL());
        System.out.println("getFileName: " + directory.getFileName());
        System.out.println("getParent: " + directory.getParent());
        System.out.println("getNameCount: " + directory.getNameCount());
        System.out.println("getName: " + directory.getName(2));
        System.out.println("getRoot: " + directory.getRoot());
        System.out.println("getFileSystem: " + directory.getFileSystem().getSeparator());
        System.out.println("toFile: " + directory.toFile());

        System.out.println("-".repeat(20));

        Path path = Path.of("src/java/resources", "netkiller.png");
        System.out.println("getParent: " + path.getParent());
    }

}			
			
			

输出结果

			
toURL: file:/Users/neo/workspace/watch/src/main/resources/
getParent: src/main
getFileName: resources
--------------------
toURL: file:/Users/neo/workspace/watch/src/java/resources
getFileName: resources
getParent: src/java
getNameCount: 3
getName: resources
getRoot: null
getFileSystem: /
toFile: src/java/resources
--------------------
getParent: src/java/resources			
			
			

FileSystems 例子

			
package cn.netkiller.test;

import java.nio.file.FileSystems;

public class Test {
    public Test() {
    }

    public static void main(String[] args) throws Exception {

        String baseUrl = FileSystems
                .getDefault()
                .getPath("src", "main", "resources")
                .toUri()
                .toURL()
                .toString();

        System.out.println("url: " + baseUrl);
    }

}