欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > File 类的用法和 InputStream, OutputStream 的用法

File 类的用法和 InputStream, OutputStream 的用法

2025/4/17 5:52:29 来源:https://blog.csdn.net/m0_74893352/article/details/147054493  浏览:    关键词:File 类的用法和 InputStream, OutputStream 的用法
1 文件系统的操作
  • 创建文件,删除文件,创建目录,重命名文件,判定文件存在...

  • Java中提供file类进行文件系统操作,使用路径进行初始化表示具体的文件(可以存在,也可以不存在),基于这个对象进行后续操作。构造方法:需要使用双//。IDEA会自动转换。

    基准目录取决于运行程序的方式。

    1. IDEA中运行,基准路径是项目所在的目录

    2. 在命令行中通过Java命令运行,是Java命令所处的目录。

    3. 被其他进程调用的程序,例如进程1通过创建子进程的方式调用进程2。进程2的基准路径和进程1相同。

    4. 代码执行过程中,可以通过一些api修改基准路径,改成我们指定的某个路径。

    修饰符及返回值类型 方法签名 说明

    • String getParent() 返回 File 对象的父目录文件路径

    • String getName() 返回 FIle 对象的纯文件名称

    • String getPath() 返回 File 对象的文件路径

    • String getAbsolutePath() 返回 File 对象的绝对路径

    • String getCanonicalPath() 返回 File 对象的修饰过的绝对路径 需要throw IOException

    • boolean exists() 判断 File 对象描述的文件是否真实存在

    • boolean isDirectory() 判断 File 对象代表的文件是否是一个目录

    • boolean isFile() 判断 File 对象代表的文件是否是一个普通文件

    • boolean createNewFile() 根据 File 对象,自动创建一个空文件。成功创建后返回 true

    • boolean delete() 根据 File 对象,删除该文件。成功删除后返回 true

    • void deleteOnExit() 根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时 才会进行。稍后删除。

    • String[] list() 返回 File 对象代表的目录下的所有文件名

    • File[] listFiles() 返回 File 对象代表的目录下的所有文件,以 File 对象表示 如果想看到所有目录和文件,需要递归。经典面试题。

    • boolean mkdir() 创建 File 对象代表的目录

    • boolean mkdirs() 创建 File 对象代表的目录,如果必要,会创建中间目录

    • boolean renameTo(File dest) 进行文件改名,也可以视为我们平时的剪切、粘贴操作。移动文件,就是修改文件所在的 路径,也可以视为一种”重命名“。

    • boolean canRead() 判断用户是否对文件有可读权限

    • boolean canWrite() 判断用户是否对文件有可写权限

2 文件内容的操作
  • 操作系统提供了读文件和写文件的api,Java也进行了封装。”文件流“/”IO流“ Stream 针对流对象

  • 都是抽象类,需要子类实现

  1. 字节流(二进制)读写数据的基本单位是字节。

  • InputStream

  • OutputStream 数据远离cpu

  1. 字符流(文本)读写数据的基本单位是字符。

  • Reader

    • read()

  • Writer

  • 文件描述符表。打开文件等操作会有在文件描述符表占位置。占满了会有”文件资源泄露“。因此打开文件后应该及时关闭。问题隐蔽性高。

这样不用写finally也不用写close 语法为try with resources。对象必须是实现Closable接口的类才能放进这个try里面。

  1. 文件操作的核心内容:

  • 打开文件 创建流对象即可

  • 关闭文件

  • 读文件 硬盘->内存

    • read() 读一次返回一个字节的内容(byte) 实际返回类型是int,读取完毕是-1 .使用循环读取文件所有内容。

    • read(字节数组)硬盘中读出的对应数据填充到buffer内存的字节数组中。buffer为输出型参数。

    • read(byte[],int off,int len) 使用数组中[off,off+len)下标范围的区间。

  • 写文件

    • 和read相似

    • 但是写操作会把之前的内容清空。只outputstream打开内容也会清空。开启追加模式,写入的同时不会被清空:

    • sccander

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com