package com.File; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class FileDemo1 { public static void main(String[] args) { } /* * 我们想要实现IO操作,就必须知道硬盘上文件的表现形式 * 而java就提供了一个File类供我们使用 * * File:文件和目录路径名的抽象表示形式 * 构造方法: * File(String pathname) * File(String parent,String child) * File(File parent,String child) */ public void test01(){ //把d:\demo\a.txt封装成一个File对象 File file=new File("E:\demo\a.txt"); File file2=new File("E:\demo","a.txt"); File file3=new File("E:\demo"); File file4=new File(file3,"a.txt"); } /* *public boolean createNewFile() :当且仅当不存在创建 *public boolean mkdir() 当且仅当不存在创建文件夹 *public boolean mkdirs() 创建文件夹,如果父文件夹不存在会自动创建出来 * * 骑白马的不一定是王子,可能是班长 * 注意:你到底是要创建文件还是文件夹,你最清楚,方法不要调错 */ public void test02() throws IOException{ //我要早e盘目录下创建一个文件夹demo File file=new File("e:\demo"); System.out.println("mkdir:"+file.mkdir()); //我要在e盘目录demo下创建一个文件a.txt File file2=new File("e:\demo\a.txt"); System.out.println("createNewFile:"+file2.createNewFile()); //我要在e盘目录test下创建一个文件b.txt //Exception in thread "main" java.io.IOException: 系统找不到指定的路径。 //注意:想要在某个目录下创建内容,该目录必须首先存在 // File file3=new File("e:\test\b.txt"); // System.out.println("createNewFile:"+file3.createNewFile()); //我要在e盘目录test下创建一个文件aaa目录 // File file4=new File("e:\test\aaa"); // System.out.println("mkdir:"+file4.mkdir()); // File file5=new File("e:\test"); // File file6=new File("e:\test\aaa"); // System.out.println("mkdir:"+file5.mkdir()); // System.out.println("mkdir:"+file6.mkdir()); File file7=new File("e:\aaa\bbb\ccc\ddd"); System.out.println("mkdirs:"+file7.mkdirs()); File file8=new File("e:\test\ddd\x.txt"); System.out.println("mkdirs:"+file8.mkdirs()); } /* * 删除功能:public boolean delete() * * 注意: * A:如果你创建文件或者文件夹忘了写盘符;路径,那么默认在项目路径下 * B:java中的删除不走回收站 * C:如果要删除一个文件夹,请注意该文件夹内不能包含文件夹或者文本 */ public void test03() throws IOException{ // File file=new File("e:\a.txt"); // System.out.println("createNewFile:"+file.createNewFile()); //我不小心写成这个样子 File file=new File("a.txt"); System.out.println("createNewFile:"+file.createNewFile()); File file2=new File("aaa\bbb\ccc"); System.out.println("mkdirs:"+file2.mkdirs()); File file3=new File("a.txt"); System.out.println("delete:"+file3.delete()); File file4=new File("aaa\bbb\ccc"); System.out.println("delete:"+file4.delete()); // File file5=new File("aaa"); // System.out.println("delete:"+file5.delete());//要删除一个文件夹必须先删除它的子元素 File file6=new File("aaa\bbb"); File file7=new File("aaa"); System.out.println("delete:"+file6.delete()); System.out.println("delete:"+file7.delete()); } /* * * 重命名功能:public boolean renameTo(File dest) * 如果路径名相同,就是改名字 * 如果路径名不同,就是改名并且剪切 * * 路径以盘符开始: 绝对路径: c:\a.txt * 路径不易盘符开始: 相对路径 a.txt */ public void test04(){ // File file=new File("林青霞.jpg"); // if(!file.exists()){ // file.createNewFile(); // } //需求,我要修改这个文件的名称为东方不败.jpg // File newFile=new File("东方不败.jpg"); // System.out.println("renameTo:"+file.renameTo(newFile)); File file2=new File("东方不败.jpg"); File newFile2=new File("e:\林青霞.jpg"); System.out.println("renameTo:"+file2.renameTo(newFile2)); } /* * 判断功能: * public boolean isDirectory() * public boolean isFile() * public boolean exists() * public boolean canRead() * public boolean canWrite() * public boolean isHidden() * */ public void test05(){ File file=new File("a.txt"); System.out.println("isDirectory:"+file.isDirectory()); System.out.println("isFile:"+file.isFile()); System.out.println("exists:"+file.exists()); System.out.println("canRead:"+file.canRead()); System.out.println("canWrite:"+file.canWrite()); System.out.println("isHidden:"+file.isHidden()); } /* * 获取功能: * public String getAbsolutePath() 获取绝对路径 * public String getPath() 获取相对路径 * public String getName() 获取名称 * public long length() 获取长度,字节数 * public long lastModified() 获取最后一次修改的时间,毫秒值 * */ public void test06(){ // File file=new File("demo"); // file.mkdirs(); // File file1=new File("demo\text.txt"); // file1.createNewFile(); File file=new File("demo\text.txt"); System.out.println("getAbsolutePath:"+file.getAbsolutePath()); System.out.println("getPath:"+file.getPath()); System.out.println("getName:"+file.getName()); System.out.println("length:"+file.length()); System.out.println("lastModified:"+file.lastModified()); // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(new Date(file.lastModified()))); } /* * 获取功能: * public String[] list():获取指定目录下所有文件或者文件夹的名称数组 * public File[] listFiles() 获取指定目录下所有文件或者目录的File数组 */ public void test07(){ File file=new File("e:\"); String[] strArray=file.list(); for(String s:strArray){ System.out.println(s); } System.out.println("----------------"); File[] fileArray=file.listFiles(); for(File f:fileArray){ System.out.println(f.getName()); } } /* * 使用文件名称过滤器,类似于treeSet中使用的比较器 * * 判断在E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 * * 思路: * 先获取所有的,再判断满足条件就输出 * 获取的时候就已经满足条件了,然后就输出即可 * * 要想实现这个效果,就必须学习一个接口:FilenameFilter 文件名称过滤器 * public String[] list(FilenameFilter filter) * public File[] listFiles(FilenameFilter filter) */ public void test08(){ File file=new File("e:\"); //获取该目录下所有文件或者文件夹的String数组 String[] strArray=file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // System.out.println(dir+"--------"+name); // File file=new File(dir,name); // System.out.println(file); // boolean flag=file.isFile(); // boolean flag2=name.endsWith(".jpg"); // return flag && flag2; return new File(dir,name).isFile() && name.endsWith(".jpg"); } }); for(String s:strArray){ System.out.println(s); } } //小测试 /* * 判断在E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 * */ public void test09(){ File file=new File("e:\"); File[] files=file.listFiles(); for(File f:files){ if(f.isFile()){ if(f.getName().endsWith(".jpg")){ System.out.println(f.getName()); } } } } }