流的分类与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()的返回值中

浙公网安备 33010602011771号