陆小曼|Java IO,讲的实在是太好了,这篇( 三 )


API功能StringgetAbsolutePath()返回该文件处于系统中的绝对路径名StringgetPath()返回该文件的相对路径 , 通常与newFile()传入的路径相同StringgetName()返回该文件的文件名
文件检测:
API功能booleanisFIle()校验该路径指向是否一个文件booleanisDirectory()校验该路径指向是否一个目录booleanisExist()校验该路径指向的文件/目录是否存在booleancanWrite()校验该文件是否可写booleancanRead()校验该文件是否可读booleancanExecute()校验该文件/目录是否可以被执行
操作文件:
API功能mkdirs()递归创建多个文件夹 , 路径中间有可能某些文件夹不存在createNewFile()创建新文件 , 它是一个原子操作 , 有两步:检查文件是否存在、创建新文件delete()删除文件或目录 , 删除目录时必须保证该目录为空
多了解一些
文件的读/写/执行权限 , 在Windows中通常表现不出来 , 而在Linux中可以很好地体现这一点 , 原因是Linux有严格的用户权限分组 , 不同分组下的用户对文件有不同的操作权限 , 所以这些方法在Linux下会比在Windows下更好理解 。 下图是redis文件夹中的一些文件的详细信息 , 被红框标注的是不同用户的执行权限:
r(Read):代表该文件可以被当前用户读 , 操作权限的序号是4w(Write):代表该文件可以被当前用户写 , 操作权限的序号是2x(Execute):该文件可以被当前用户执行 , 操作权限的序号是1
文件所有者:拥有的权限是红框中的前三个字母 , -代表没有某个权限文件所在组的所有用户:拥有的权限是红框中的中间三个字母其它组的所有用户:拥有的权限是红框中的最后三个字母JavaIO流对象回顾流的分类有2种:
根据数据流向分为输入流和输出流根据数据类型分为字节流和字符流所以 , 本小节将以字节流和字符流作为主要分割点 , 在其内部再细分为输入流和输出流进行讲解 。
注意不要认为用什么流读入数据 , 就需要用对应的流写出数据 , 在Java中没有这么规定 , 下图只是各个对象之间的一个对应关系 , 不是两个类使用时必须强制关联使用 。
下面有非常多的类 , 我会介绍基类的方法 , 了解这些方法是非常有必要的 , 子类的功能基于父类去扩展 , 只有真正了解父类在做什么 , 学习子类的成本就会下降 。
重要方法功能publicabstractintread()从输入流中读取下一个字节 , 读到尾部时返回-1publicintread(byteb[])从输入流中读取长度为b.length个字节放入字节数组b中publicintread(byteb[],intoff,intlen)从输入流中读取指定范围的字节数据放入字节数组b中publicvoidclose()关闭此输入流并释放与该输入流相关的所有资源
还有其它一些不太常用的方法 , 我也列出来了 。