Java学习笔记
File和IO流(一)
最近,我学了很多Java有关的知识,孔子云:学而时习之,不亦说乎?我有必要对所学知识进行一次总结,形成体系,为后面实践打好基础。这几天我学的知识有枚举、集合、泛型、File和IO流。在这里我先讲一讲有关File和IO流,回头再总结一下另外三者。
File和IO流都再Java.io的包下面,他们都是有关数据通讯的类,两者有啥区别呢?这就好比物流公司,打个比方,小黑在电商老白那里买了一部手机,而这个手机存放在老白仓库里,要如何拿给小黑呢?首先,物流公司经理在后台填写发货单,上有A地址:老白仓库,B地址:小黑家;紧接着,经理将发货单送给快递小哥,小哥拿到发货单后,先到A地址老白仓库取走手机,再到B地址送到小黑手里。最终,小黑成功拿到了网上买的手机。这里的发货单就好比是File对象,我们要填写的A、B地址就写在其中,IO流是快递小哥,手机是我们要传输的数据;我们把File交给IO流之后,他帮我们将数据自动传递到目的地,当然,最后数据送完了,一定要记得关闭IO流资源,以免造成浪费(不能让快递小哥一直在外面送快递呀,人家还要休息呢)。
想必大家对File和IO流之间的关系已经很清楚了,下面我来说一说File类如何使用,File类有三个构造器:
public File(String pathname);
public File(String parent,String child);
public File(File parent,String child);
在真正使用的时候,我们一般要定义两个File类,一个资源地址srcFile(老白仓库),一个目的地地址desFile(小黑家),这两个都用上面构造器来创造,只是相应的pathname不同罢了。
Java在File类中也声明了一些常用方法,主要有:文件获取、文件重命名、文件判断、文件创建、文件删除这五大功能。具体信息如下:
File 类的获取功能
public String getAbsolutePath():获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
File 类的重命名功能
public boolean renameTo(File dest):把文件重命名为指定的文件路径
File 类的判断功能
public boolean isDirectory():判断是否是文件目录
public boolean isFile() :判断是否是文件
public boolean exists() :判断是否存在
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏
File 类的创建功能
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
File 类的删除功能
public boolean delete():删除文件或者文件夹
最后,来个例题说明一些方法的使用:判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称。
首先,我的相对路径:FileAndIo中,只有一个delicious.jpg文件。
其次,我编写如下代码,在后面的代码中,我先创建了一个"hello.jpg”文件,默认会创建在相对路径FileAndIo下,然后调用fileDection()方法,成功的话会显示出两个文件名:delicious.jpg和hello.jpg 。
最后,点击运行,成功,如下所示。