【IO流】

本文详细介绍了Java NIO中的Path和Files类,包括Path的构造、方法如getFileName、resolve等,以及Files类的各种文件操作如isWritable、createFile等。此外,还讲解了字节流的概念,FileInputStream和FileOutputStream的基本使用,并提到了Reader和Writer在处理文本时的优势。
摘要由CSDN通过智能技术生成

1、Path类和Paths类

        通过Paths通过一个字符串对象来构造Path对象。File是1.7之前的文件类,之后被Path替代。

        Path p1=Paths.get(D:/work/java);

        1.1、Path类的方法:

        public Path getFileName();根据路径获取文件名称。

        public int getNameCount();返回路径中文件名称的数目。

        public Path getName(int index);返回指定位置的文件夹名称。

        public Path getParent();返回父路径,如果没有返回null。

        public Path getRoot();返回跟路径,如果没有返回null。

        public boolean isAbsolute();如果是根路径返回true。

        publlic Path toAbsolutePath();返回跟路径。

        public Path resolve(String path);拼接路径

        public Path reslveSibling(String path);将父路径下的字符转换为新路径。

        public Path relativize(Path other);构造两个路径之间的路径。

2、Files类

        1.1、Files类的方法

        public static boolean isWritable(Path path);判断是否可写入

        public static boolean exists(Path path);判断是否存在

        public static Path createFile(Path path);创建文件

        public static boolea isSameFile(Path p1,Path p2);判断是否是同一个文件(路径异常报错)

        public static long size(Path path);获取文件的长度(字节)

        public static boolean isDirectory(Path path);判断是否是目录(文件夹)

        public static Path createDirectory(Path path);创建文件夹

        public static Path createDirectories(Path path);可以创建多级目录

        public void delete(Path path);删除文件(不存在抛异常)

        public void deleteIfExists(Path path);删除文件(不抛异常)

        遍历子文件

        public static Stream<Path> list(Path dir);//返回目录条目

        public static DirectoryStream<Path> newDirectoryStream(Path dir);//返回所有条目

        public static DirectoryStream<Path> newDirectoryStream(Path dir,//超载带条件

                        // Filter是过滤器的意思                    DirectoryStream.Filter<? super path> filter);

        遍历目录树

        public static Stream<Path> walk(Path start,options(一般不写));//访问目录树

        public static Stream<Path> find(Path start,int maxDepth,双参数正则表达式,op(一般不写));

        //可带条件访问目录树

        public static Path walkFileTree(Path path,FileVisitor<? super path>visitor);

        //这是一个功能相当强大的目录树访问方法,通过匿名内部类实现了接口,通过四个枚举值:CONTINUE(继续遍历)、SKIP_SIBLINGS(忽略当前同级别目录,返回上级继续遍历)、SKIP_SUBTREE(忽略子集继续遍历)、TERMINATE(终止遍历)实现对目录树的多种操作。

        1.2、Files类操作字节流

        public static InputStream newInputStream(Path p);//创建可读取文件的输入流(输入程序)

        public static OutputStream newOutputStream(Path p);//创建可写入的输出流(程序输出)

        public static byte[] readAllBytes(Path p);//从文件中读取所有字节

        public static String readString(Path p);//从文件中读取字符串

        public static String readString(Path p , Charset cs);//指定字符集读取字符串

        public static Lint<String> readAllLines(Path p);//从文件中读取所有行

        public static List<String> readAllLines(Path p, Charset cs);//指定字符集读取所有行

        public static Path write(Path p,Byte[] b);//写入字节数组

        public static Path writeString(Path p,CharSequence sqc,Openoption o);//写入字符串

        public static Path writeString(Path p,CharSequence sqc,Charset cs,Openoption o);

        //指定字符集写入字符串

        public static Path write(Path p,Iterable<? extends CharSequence> lines,Openoption o);

        //文本行写入文件

        public static Path write(Path p , Iterable<? extends CharSequence> lines,  Charset cs,Openoption o);//指定字符集将文本行写入文件

        public static path move(Path source , Path target , CopyOptions o);//文件移动或重命名

        public static Path copy(Path source , Path target,CopyOptions o);//复制文件

        public static long copy(Path source , OutputStream os);//文件的所有字节复制到输出流

        public static long copy(InputStream os,Path target,CopyOptiongs o);//将输入流的字节到中

3、字节流

        流是源到目的的轨迹,次序是有意义的。输入流只能读取,输出流只能写入。

         3.1、FileInputStream

        FileInputStream fis = new FileInputStream(String s);//创建文件输入流

        int read();//基本获取方法,读取下一个字节

        int read(Byte[] b);//读取一定数量的字节,存储在缓冲区数组b中。

        int read(Byte[] b,int off ,int len);//读取读取指定范围的字节,存储在缓冲区b中。

        void close();关闭流

        3.2、FileOutputStream

        FileOutputStream fos = new FileOutputStream(String s);//创建文件呢输出流

        void write();

        voie write(Byte[] b);

        void write(Byet[] b,int off , int len);//基本写入方法,与in相似。

        void close();//关闭流

        void flush();//强制写入

4、字节流Reader和Writer

        更适用于操作中文,防止读取或写入半个中文,用法同上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值