Java File和I/O流

File

路径

相对路径(推荐)

        .  对应当前工作目录

        .. 当前工作目录的上级目录

绝对路径

        C:/a/b/c/1.txt

        /bin/...

构造方法

//pathname 路径名字符串
public File(String pathname)

//parent 父路径
//child 子路径
public File(String parent, String child)


public File(File parent, String child)

创建操作

//创建新的普通文件, 成功为true, 失败false
//false: (1)文件路径不合法 (2)文件已存在 (3)对应文件夹没有[写权限]
public boolean createNewFile() throws IOException
//创建目录, 成功true, 失败false
//false: (1)同上 (2)文件夹已存在 (3)同上
public boolean mkdir()
//创建/a/b/c多级目录, 成功true, 失败false 创建中间文件夹/中间路径文件夹
public boolean mkdirs()

移动操作

//srcFile.renameTo(destFile)
//dest文件需要移动的目的地, 可以修改文件名字
public boolean renameTo(File dest)

删除操作

//删除对应文件/文件夹  成功true,  失败false
// (1)直接删除(不进入回收站) (2)不能删除[非空文件夹]
public boolean delete() 
//在[程序退出]时删除
// (1)同上 (2)同上
public void deleteOnExit() 

查看相关信息

//获取文件/文件夹名

String getName();

//获取当前文件/文件夹的全路径
String getPath();

//获取当前文件/文件夹的上级目录名称
String getParent();

//获取当前路径对应的绝对路径字符串
String getAbsolutePath();

//获取当前路径对应的绝对路径 File 对象
File getAbsoluteFile();

//获取当前文件/文件夹最后修改时间,(时间戳)
long lastModified();

//获取当前文件占用的空间字节数,如果是文件夹结果为 0L or 4096L 
long length();

        File file = new File("F:\\test\\aaa\\bbb\\ccc");
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getParent());

        System.out.println(file.getAbsolutePath());
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.lastModified());
        System.out.println(file.length());
  //如果是空文件夹:0L    如果是非空文件夹:4096L   如果是普通文件:字节长度


/*
控制台:
ccc
F:\test\aaa\bbb\ccc
F:\test\aaa\bbb
F:\test\aaa\bbb\ccc
F:\test\aaa\bbb\ccc
1691406923857
0
*/

判断方法

//判断 File 对象对应的文件/文件夹是否存在

boolean exists();

//判断 File 对象是否对应一个普通文件
boolean isFile();

// 判断 File 对象是否对应一个文件夹
boolean isDirectory();

//判断 File 对象是否采用绝对路径方式
boolean isAbsolute();

//判断 File 对象对应的文件/文件夹是否为隐藏属性

boolean isHidden();

 文件列表

//获取当前 File 对象对应文件夹中所有子文件和子文件夹名称 字符串数组

public String[] list();

//获取当前 File 对象对应文件夹中所有子文件和子文件夹 File 对象数组

public File[] listFiles();

 文件名过滤器

@FunctionalInterface
public interface FilenameFilter {
    boolean accept(File dir, String name);
}

 files集合存储以".java"为结尾的文件

        File file = new File("F:\\test");
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return new File(dir, name).isFile() && name.endsWith(".java");
            }
        });

I/O

概述

java中通过io流实现设备之间的数据传输, io为input/output的缩写

分类

流向分类:

        输入流Input  文件流向程序

        输出流Output  程序流向文件

操作形式区分:

        字节流InputStream/OutputStream  按照(字节)为操作单位,处理文件内容,适用所有的文件(图片视频)

        字符流Reader/Writer   只可以处理使用【记事本】打开的可视化文本无乱码文件(操作的基本单元为Unicode码元)

        对象流   一般用于序列化操作(此文章不做举例)

缓冲流\转换流等...

复制文件

利用缓冲流

    try (
                BufferedInputStream bis = new BufferedInputStream(Files.newInputStream(Paths.get("F:/test/22.txt")));
                BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(Paths.get("F://test/33.txt")))
        ) {
            byte[] buffer = new byte[1024 * 8];
            int length = -1;
            while ((length = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, length);
            }


        } catch (IOException e) {
            throw new RuntimeException(e);
        }

API线上文档

Java Platform SE 8

java.io

java.nio.file

字节流和字符流的区别

参考地址:Java IO——字节流和字符流详解&区别对比_io字节流和字符流的区别_卜大爷的博客-优快云博客

 

字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
字节流默认不使用缓冲区;字符流使用缓冲区。
字节流在操作的时候本身是不会用到缓冲区的,是与文件本身直接操作的,所以字节流在操作文件时,即使不关闭资源,文件也能输出;字符流在操作的时候是使用到缓冲区的。如果字符流不调用close或flush方法,则不会输出任何内容。
字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值