今日内容:
-
File流(文件操作)
-
Lambda表达式
File流
(主要就是一些关键字以及使用方法)
1.分隔符
static String pathSeparator ; 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 static char pathSeparatorChar ; 与系统有关的路径分隔符。 static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 static char separatorChar 与系统有关的默认名称分隔符。
使用格式:
String pathseparator = File.pathSeparator;
System.out.println(pathseparator);// ;
String separator = File.separator;
System.out.println(separator);//
2.File:用于路径映射,通过输入的字符串将其转化成路径抓取
路径: 绝对路径: 是一个完整的路径 一般以盘符(D:,C:,c:,d:)为开头 如: D:DeveloperJavajdk1.8.0_191README.html 相对路径:是一个简化的路径 E:codesworkspaceday26_LambdaAndFile.classpath---->简化为:.classpath(可以省略前面项目的根目录) 注意: 1.路径是不区分大小写 2.路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠才代表一个普通的反斜杠。 格式: File f1 = new File("D:\小鸟\one\two"); System.out.println(f1);//D:\小鸟\one\two
3.获取功能的方法
public String getAbsolutePath():返回此File表示的绝对路径名字符串。 public String getPath():将此File转换为路径名字符串 源码调用toString方法 public String getName():返回由此File表示的文件或目录的名称。 末尾文件显示 public long length():返回此File表示的文件的长度。 末尾文件的大小,如果文件不存在,为0; 格式 File f1 = new File("D:\小鸟\one\two"); String absolutePath = f1.getAbsolutePath(); System.out.println(absolutePath);// D:小鸟one wo File f2 = new File(".classpath"); String path2 = f2.getPath(); System.out.println(path2);// .classpath File f1 = new File("D:\小鸟\one\two"); String name = f1.getName(); System.out.println(name);//two File f2 = new File("C:\Users\挖掘机\Desktop\File\demo01"); long length2 = f2.length(); System.out.println(length2);//4096
4.判断功能的方法
public boolean exists():判断File表示的文件或者文件夹是否实际存在 //绝对位置找直接找。没有就是false 相对位置找从这个文档的项目开始找 public boolean isDirectory():判断此File表示的文件夹是否存在 public boolean isFile():判断此File表示的文件是否存在 格式: File f1 = new File("D:\小鸟\one\two"); System.out.println(f1.exists());// true File f5 = new File("123.txt"); System.out.println(f5.exists());//false File f1 = new File("E:\codes\workspace\day26_LambdaAndFile\.classpath"); System.out.println(f1.isDirectory());// false System.out.println(f1.isFile());// true
5.删除添加文件夹/文件
public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建一个空文件,返回值是true 注意: 1. 此方法不能创建文件夹,只能创建文件 2. 创建文件的路径必须存在,否则就抛出异常。 public boolean delete():删除由此File表示的文件或者目录 删除空文件夹,文件不用为空 此方法,可以删除构造方法路径中给出的文件或者文件夹
注意: delete方法时直接从磁盘删除文件/文件夹,不经过回收站。 文件夹中有内容不能删除,但是文件中有内容不影响删除 删除的路径可以是相对路径也可以是绝对路径, 如果是相对路径,则查看当前项目的根目录是否有该文件或者文件夹, 如果有且内容为空删除,如果没有返回false,删除失败。
public boolean mkdir():创建由此File表示的文件夹 一层一层创建文件夹 创建单级空文件夹 public boolean mkdirs():创建由此File表示的文件夹,包括任何必须但是又不存在的父目录 创建很多层文件夹。 既可以创建单级空文件夹,也可以创建多级孔文件夹 注意: 此方法只能创建文件夹,不能创建文件 路径不对也不会抛出异常,可以使用相对路径也可以使用绝对路径 格式: File f1 = new File("D:\小鸟\one\two"); boolean b1 = f1.createNewFile(); System.out.println(b1);// false File f1 = new File("D:\小鸟\one\two\125"); boolean b1 = f1.mkdir(); System.out.println(b1);// true 创建123文件夹 File f1 = new File("E:\codes\workspace\day26_LambdaAndFile\aa"); boolean b1 = f1.delete(); System.out.println(b1);
6.目录的遍历
public String[] list():返回一个String数组,表示该File目录中的所有的子目录或者子文件。(子目录子文件) public File[] listFile():返回一个File数组,表示该File目录中的所有的子目录或者子文件。(子目录路径和子文件路径)
注意事项:
list方法和listFile方法遍历的是构造方法中指定的目录。
如果构造方法中给出的目录的路径不存在,会抛出空指针异常。
如果构造方法中给出的目录不是一个目录,也会抛出一个空指针异常。
File file = new File("E:\codes\workspace\day26_LambdaAndFile"); String[] list = file.list(); // 遍历 for (String string : list) { System.out.println(string);
}
File file = new File("E:\codes\workspace\day26_LambdaAndFile");
File[] list = file.listFiles();
// 遍历
for (File f : list) {
System.out.println(f.toString());
}
Lambda表达式
标准格式:
(参数类型1 参数名称1,参数类型2 参数名称2,....) -> {代码语句}
格式说明
小括号内的语法与传统的方法参数列表一致,无参数就留空,多个参数则用逗号隔开 ->数新引入的语法格式,代表指向的动作 大括号里的语法与传统方法体要求基本一致
Lambda省略格式:
Lambda强调的是做什么,而不是怎么做,所以凡是可以根据上下文推到得知的信息,都可以省略。比如: invokeSum(3.14, 3.15, (double d1,double d2) ->{ return d1 + d2; }); //省略格式表达 invokeSum(3.14,3.15,(d1,d2)->d1+d2);
省略的规则
在Lambda标准格式的表达式的基础上,使用省略写法的规则是: 1.小括号内参数参数的类型可以省略 2.如果小括号内有且仅有一个参数,则小括号也可以省略 3.如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号,return关键字和语句的分号
Lambda使用的前提
Lambda的语法非常的简洁,使用非常的简单,但是有以下注意事项: 1.使用Lambda必须由接口,且要求接口中有且仅有一个抽象方法 无论JDK内置的Runnable、Comparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一,才可使用Lambda 2. 使用Lambda必须具有上下文推断。 也就是方法的参数或者局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。 备注:如果有且仅有一个抽象方法的接口,称为函数式接口