Path、Files方法

Path方法

package Java10;

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

//path方法
public class PathFile {
    public static void main(String[] args) {
        //创建Path对象
        Path p = Paths.get("D:/file/1.png");
        System.out.println(p);  //D:\file\1.png

        //创建Path对象
        File f = new File("D:/file/2.png");
        Path p1 = f.toPath();
        System.out.println(p1);  //D:\file\2.png

        //getFileName():返回文件名称。
        System.out.println(p.getFileName()); //1.png

        //getNameCount():返回文件名称的数目
        System.out.println(p.getNameCount()); //2

        //getName(int index):返回指定位置的文件名称
        System.out.println(p.getName(0)); //file

        //getParent():返回此路径的父路径,如果该路径没有父路径,则返回null
        System.out.println(p.getParent());  //D:\file

        //getRoot()返回此路径的根路径,如果该路径没有根路径,则返回null
        System.out.println(p.getRoot());  //D:\

        //isAbsolute():如果此路径是绝对路径,则返回true
        System.out.println(p.isAbsolute()); //true

        //toAbsolutePath():返回此路径的绝对路径
        System.out.println(p.toAbsolutePath());  //D:\file\1.png

        //resolve(String path)在此路径下将给定的路径字符串追加在最后位置
        System.out.println(p.resolve("3.png"));  //D:\file\1.png\3.png

        //resolveSibling(String path):用给定的路径字符串替换指定的路径
        System.out.println(p.resolveSibling("3.png"));  //D:\file\3.png

        //relativize(Path other):根据当前路径和给定的路径,构造两个路径之间的相对路径
        System.out.println(p.relativize(p1));  //..\2.png
    }
}

File方法

package Java10;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

//File方法
public class PathFiles {
    public static void main(String[] args) throws IOException {
        Path p1 = Paths.get("D:\\桌面\\知识点\\知识点\\1Java.docx");
        Path p2 = Paths.get("D:\\桌面\\知识点\\知识点\\2Mysql.docx");

        //Files.isWritable(p):判断文件是否可被写入。 文件存在&&可写,返回true。
        System.out.println(Files.isWritable(p2));  //true

        //Files.exists(Path path):判断文件是否存在
        System.out.println(Files.exists(p2)); //true

        //isSameFile(Path p1,Path p2):判断两个文件是否是同一个文件
        System.out.println(Files.isSameFile(p1, p2)); //false

        //size(Path path):获取文件的长度(不是目录的长度),单位是字节。
        System.out.println(Files.size(p2));

        //isDirectory(Path path):测试文件是否为目录
        System.out.println(Files.isDirectory(p2)); //false

        //Files.createFile(p3):创建一个新的空文件,如果文件已经存在,则抛出异常
        Path p3 = Paths.get("D:\\a.txt");
        Files.createFile(p3);

        //Files.createDirectory(p4):创建一个新的目录,如果目录已经存在,则抛出异常
        Path p5 = Paths.get("D:/a");
        Files.createDirectory(p5);

        // Files.createDirectories(p5):创建多级新的目录
        Path p6 = Paths.get("D:/b/java");
        Files.createDirectories(p6);

        // delete(Path path):删除文件,如果文件不存在,抛异常
        Files.delete(p3);

        //deleteIfExists():删除文件,如果文件不存在,什么也不做。 只能删除最后一级文件。
        Files.deleteIfExists(p6);
    }
}

Files方法

package Java10;

import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;

//写入文件,读取文件
public class A {
    public static void main(String[] args) throws IOException {
        Path p = Paths.get("D:/java/test1/src/a.txt");
        //写入文件
        OutputStream os = Files.newOutputStream(p);
        os.write("abc".getBytes(StandardCharsets.UTF_8));

        //写入文件,StandardOpenOption.APPEND:以追加的形式添加
        OutputStream os1 = Files.newOutputStream(p, StandardOpenOption.APPEND);
        os1.write("abc".getBytes(StandardCharsets.UTF_8));

        //写入字节数组,StandardOpenOption.APPEND:以追加的形式添加
        Files.write(p, "a".getBytes(), StandardOpenOption.APPEND);

        //按行添加
        List<String> lst = new ArrayList();
        lst.add("javakc63");
        lst.add("javakc64");
        lst.add("javakc65");
        Files.write(p, lst, StandardOpenOption.APPEND);

        //生成字节流,读取文件
        InputStream is = Files.newInputStream(p);

        //读取byte数组
        byte[] b = Files.readAllBytes(p);
        String s = new String(b);
        System.out.println(s);

        //按行读取
        List<String> l = Files.readAllLines(p);
        for (String e : l) {
            System.out.println(e);
        }

        //文件的移动和复制
        Path p1 = Paths.get("D:/java/test1/src/a.txt");
        //目标文件以及移动完成后的名称
        Path p2 = Paths.get("D:/java/test1/src/b.txt");
        //重命名
        Files.move(p1, p2);
        //复制
        Files.copy(p1, p2);

        //写入字符串 jdk11
        Files.writeString(p, "javakc", StandardOpenOption.APPEND);

        //读取字符串 jdk11
        String s1 = Files.readString(p);
        System.out.println(s1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值