本节课我学习的主要内容有:
1.I/O
2.File类
3.FileFilter接口
I/O:
I:Input
O:Output
从一个数据源头读取数据并将数据写入目标地点。
数据源和目的地可以是文件、内存、网络等。
File类:
属于java.io包。
它可以封装计算机中存在的或者不存在的文件。
构造方法:
File(String pathname)//传入路径字符串
File(File parent, String child)//父文件、父文件下的子目录。
File(String parent,String child)//父抽象路径、父目录抽象路径下的子抽象路径的目录。
File(URI, uri)
常用方法:
exits()判断File的对象是否存在。
creatNewFile()新建一个文件。
creatTempFile()新建一个临时文件。
mkdir()新建一个目录。
mkdirs()新建一个目录(包括目录中的子目录)。
delete()删除一个文件或目录。
deleteOnExit()虚拟机退出时删除。
renameTo()重命名当前目录或文件。
Length()返回文件大小。
list()返回指定抽象路径下的所有直接子目录或者子文件到String[]中去。
listRoots()返回所有根目录。
listFiles()返回指定抽象路径下的所有直接子目录或者子文件到File[]中去。
isFile()判断当前对象是否是文件。
isDirectory()判断当前对象是否是目录。
setReadOnly()设置属性为只读。
setReadable()设置属性为可读。
setWritable()设置属性为可写。
setExecutable()设置属性为可执行。
lastModified()返回当前对象最后修改时间。
setLastModified()设置最后修改时间。
isHidden()判断文件是否隐藏。
FileFilter接口:
属于java.io包,中的一个函数式接口
它能根据给定条件来过滤File
FileTest01类(测试今日所学所有内容):
package LessonForIO01;
import java.io.*;
public class FileTest01
{
public static void main(String[] args)
{
System.out.println(System.getProperty("user.dir"));//获得当前项目在磁盘中的位置。
//创建文件
File f1 = new File("Test02.txt");
System.out.println("f1这个对象是否存在:"+f1.exists());
if (f1.exists() != true)
{
try
{
System.out.println("在默认目录下创建Test02是否成功:"+f1.createNewFile());
} catch (IOException e)
{
e.printStackTrace();
}
}
//创建目录
File f2 = new File("D://Test03//");
System.out.println("f2这个对象是否存在:"+f2.exists());
if (f2.exists() != true)
{
System.out.println("在默认目录下创建Test03文件夹是否成功:"+f2.mkdir());
}
//在已有目录下创建不存在的文件
File f3 = new File(f2,"zlm.txt");
System.out.println("f3这个对象是否存在:"+f3.exists());
if (f3.exists() != true)
{
try
{
System.out.println("在f2目录下创建zlm.txt是否成功:"+f3.createNewFile());
} catch (IOException e)
{
e.printStackTrace();
}
}
//创建父目录到子目录的所有目录
File f4 = new File("D://f4//f4_1");
System.out.println("f4这个对象是否存在"+f4.exists());
if (f4.exists() != true)
{
System.out.println("创建f4的所有目录是否成功:"+f4.mkdirs());
}
//创建f4最里层目录中的txt文件
File f5 = new File(f4,"f4_1_1.txt");
System.out.println("f5这个对象是否存在:"+f5.exists());
if (f5.exists() != true)
{
try
{
System.out.println("创建f4的最后路径下的文件是否成功:"+f5.createNewFile());
} catch (IOException e)
{
e.printStackTrace();
}
}
//尝试删除f5
if (f5.exists() == true)
{
System.out.println("f5是否删除成功:"+f5.delete());//要先删除文件,才能继续删除目录。
}
//尝试删除f4
if (f4.exists() == true)
{
System.out.println("f4是否删除成功:"+f4.delete());//删除除了最外层文件夹中的所有文件目录。
}
//更改f1的名称
System.out.println("f1更改名称成功了吗:"+f1.renameTo(new File("Testrename.txt")));
//获取f1文件长度
System.out.println("f1的文件长度为:"+f1.length());//这样的话长度不管你有没有东西他都是零,因为你改过名了,可f1一直都是Test02。
//所以我们这样解决
System.out.println("f1改名过后的文件长度为:"+(new File("Testrename.txt").length()));//获取的是子接不是文字个数。
//获取所有的根目录
File[] roots = File.listRoots();
for (File f:roots)
{
System.out.println("获取到的根目录有:"+f);
}
//获得某个抽象路径下直接子目录或子文件
//只会列到该抽象路径的最后一个位置的最上层
//假如此时最后一个位置是目录A那么只列出A中的子目录或子文件,A中子目录或子文件的子目录或子文件就不会列出了。
File this_file = new File("D:\\workspace\\JDK8API");
String[] str_file = this_file.list();
for (String s:str_file)
{
System.out.println("获取到的子目录有:"+s);//D:\\workspace\\JDK8API的直接子目录。
}
//判断是否是路径
System.out.println("this_file是路径吗:"+this_file.isDirectory());
System.out.println("this_file是文件吗:"+this_file.isFile());
//过滤
File f6 = new File("D:\\workspace\\JDK8API");
File[] file_list_f6 = f6.listFiles((f)->f.getName().endsWith("txt"));
for (File f:file_list_f6)
{
System.out.println("获取到的子目录有:"+f.getName());//D:\\workspace\\JDK8API的txt结尾的。
}
}
}
本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。
2020.11.7
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕