流的分类与File类

什么是流

概念:内存与存储设备之间传输数据的通道

流的分类

按方向[重点]:

输入流:将<存储设备>中的内容读入到<内存>中

输出流:将<内存>中的内容写入到<存储设备>中

按单位:

字节流:以字节为单位,可以读写所有数据

字符流:以字符为单位,只能读写文本数据

按功能:

节点流:具有实际传输数据的读写功能

过滤流:在节点流的基础之上增强功能

File类

概念:代表物理盘符中的一个文件或者文件夹

方法:

createNewFile()  //创建一个新文件

mkdir()  //创建一个新目录

delete()  //删除文件或空目录

exists()  //判断File对象所对象所代表的对象是否存在

getAbsolutePath()  //获取文件的绝对路径

getName()  //取得名字

getParent ()  //获取文件/目录所在的目录

isDirectory()  //是否是目录

isFile()  //是否是文件

length()  //获得文件的长度

listFiles()  //列出目录中的所有内容

renameTo()  //修改文件名为

eg : 

public class Demo01 {
public static void main(String[] args) throws Exception {
//separator();
//fileOpe();
directoryOpe();
}
//1.分隔符
public static void separator(){
System.out.println("路径分隔符"+ File.pathSeparator);
System.out.println("名称分隔符"+ File.separator);
}
//2.文件操作
public static void fileOpe() throws Exception {
//1.创建文件
File file = new File("g:\\file.txt");
//System.out.println(file.toString());
if(!file.exists()){
boolean b = file.createNewFile();
System.out.println("创建结果:"+b);
}
//2.删除文件
//2.1直接删除
//System.out.println("删除结果:"+file.delete());
//2.2使用jvm退出时删除
//file.deleteOnExit();
//Thread.sleep(5000);
//3.获取文件
System.out.println("获取文件的绝对路径:"+file.getAbsolutePath());
System.out.println("获取路径:"+file.getPath());
System.out.println("获取文件名称:"+file.getName());
System.out.println("获取父目录:"+file.getParent());
System.out.println("获取文件长度:"+file.length());
System.out.println("文件创建时间:"+new Date(file.lastModified()).toLocaleString());
//4.判断
System.out.println("是否可写:"+file.canWrite());
System.out.println("是否是文件:"+file.isFile());
System.out.println("是否隐藏:"+file.isHidden());
}
//3.文件夹操作
public static void directoryOpe() throws Exception {
//1.创建文件夹
File dir = new File("g:\\aaa\\bbb\\ccc");
System.out.println(dir.toString());
if(!dir.exists()){
//dir.mkdir();//只能单级目录
System.out.println("创建结果"+dir.mkdirs());//创建多级目录
}
//2.删除文件夹
//2.1直接删除(注意删除空目录)
//System.out.println("删除结果:"+dir.delete());
//2.2使用jvm删除
dir.deleteOnExit();
Thread.sleep(5000);
//3.获取文件夹信息
System.out.println("获取绝对路径:"+dir.getAbsolutePath());
System.out.println("获取路径:"+dir.getPath());
System.out.println("获取文件名称:"+dir.getName());
System.out.println("获取父目录:"+dir.getParent());
System.out.println("获取文件长度:"+dir.length());
System.out.println("文件创建时间:"+new Date(dir.lastModified()).toLocaleString());
//4.判断
System.out.println("是否是文件夹:"+dir.isDirectory());
System.out.println("是否隐藏:"+dir.isHidden());
//5.遍历文件夹
File dir2 = new File("g:\\jietu");
String[] files = dir2.list();
for (String string : files) {
System.out.println(string);
}
//FileFilter接口的使用
File[] files1 = dir2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".png")) {
return true;
}
return false;
}
});
for (File file : files1) {
System.out.println(file.getName());
}
}
}

FileFilter接口

public interface FileFilter

boolean accept (File pathname)

当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中

posted @ 2021-03-15 17:00  星忄守候  阅读(116)  评论(0)    收藏  举报