File
1、File的特点
File可以访问:
1)、访问其表示的文件或目录的属性
2)、创建删除文件或空目录
3)、访问一个目录中的子项
File不可以:访问文件数据
2、File的方法:
File file=new File();
1)、file表示的文件或目录的名字file.getName()
2)、获取当前file表示的文件大小(字节)file.length()
3)、文件或目录是否可写file.canWrite()是否可读file.canread()
4)、判断该位置下是否已经存在这个文件或目录file.exists()
5)、创建文件file.createNewFile()
6)、当前file表示的文件删除file.delete()
File dir=new File();
7)、创建目录(前提是该目录所在的目录必须存在)dir.mkdir()
8)、创建目录(多级,会将不存在的父目录一同创建出来)dir.mkdirs()
9)、删除目录dir.delete()
File dir=new File(".");
if(dir.isDirectory()){//判断当前dir表示的是否为一个目录
File[] subs=dir.listFiles();
System.out.println("当前目录下共"+subs.length+"个子项");
for(int i=0;i<subs,length;i++){
File sub=sub[i];
System.out.println(sub.getName());
}
}
10)、判断是否为一个目录dir.isDirectory()
11)、获取当前目录的子项dir.listFiles()
过滤
FileFilter filter=new FileFilter()
字符串包括什么字符.indexOf("内容")>=0或者.comtains("内容")
开头.startsWith()
二、lambda表达式(箭头函数)
更简洁的语法创建匿名内部类
实现一个接口【只有一个抽象方法】时,才能去替换原始的匿名内部类形式
FileFilter filter=new FileFilter(){
public boolean accept(File file){
String name=file.getName();
boolean c=name.contains("t");
return c;
}
};
变形一
FileFilter filter=new FileFilter(){
public boolean accept(File file){
return file.getName.contains("t");
}
};
变形二
FileFilter filter1=(File file)->{
return file.getName.contains("t");
};
变形三:参数类型省略
FileFilter filter2=(file)->{
return file.getName.contains("t");
};
变形四:方法体中只有一行代码(代码有return再删除{也要把return删除})
FileFilter filter3=(file)->file.getName.contains("t");
变形五:只有一个参数
FileFilter filter4=file->file.getName.contains("t");
总结:lambda表达式在接口中只有一个抽象方法时使用,一般注解FunctionlInterface
三、输入输出流
1、抽象类,不可以被实例化,所有字节输入输出流的超类,定义基本的读写字节的相关方法
输入负责读取。从外部进入到程序的方向InputStream
输出负责写出,从程序到外界的方向OutputStream
2、文件流:链接文件与程序的管道。负责对文件进行读写的流
FileInputStream定义读取字节的相关方法,FileOutputStream定义读取字节的相关方法
方法:关闭流.close()
写文件.write()
读取文件.read()
获取当前系统的毫秒值.currentTimeMillis()
字符串按照指定的字符集转换为一组字节.getBytes()
四、低级流和高级流(节点流和处理流也叫过滤流)
1、节点流:实际连接程序与另一端的流,负责实际读写字节数据的流读写一定是建立在节点流上的。
处理流:不能独立存在,必须连接在其他流上,目的是当数据经过当前流时简化我们的读写。
文件流就是典型的低级流,是实际链接程序与文件的流,负责读写文件数据。
缓冲流是一对高级流:BufferedInputStream和BufferedOutputStream
2、对象序列化:将一个java对象按照其结构转换为一组字节的过程
对象反序列化:将一个字节还原成一个java对象的过程
3、高级流
ObjectOutputStream对象输出流
ObjectInputStream对象输入流
写出对象.writeObject()
读出对象.readObject()
4、转换流(在字符与字节之间负责转换)
转换输出流OutputStreamReader
转换输入流InputStreamReader
5、向文本写入文本数据
PrintWriter
BufferedWriter
//1、创建文件流(低级流,字节流):向文件中写入字节数据
FileOutputStream fos =new FileOutputStream("pw.txt");
//2、创建转换流(高级流,字符流):衔接字节与字符流,负责将写出的字符抓换位字节
OutputStreamWriter osw=new OutputStreamWriter(fos);
//3、创建缓冲字符流(高级流,字符流):块写文本数据加速
BufferedWriter bw=new BufferedWriter(osw);
//4、创建PrintWriter(高级流,字符流):按行写出字符串,自动行刷新
PrintWriter pw=new PrintWriter(bw);
pw.println("哈哈");
pw.close();