package File类; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.util.Date; public class FileDemo_1 { public static void main(String[] args) throws IOException { File_demo_5(); } public static void File_demo_5() { File[] files =File.listRoots(); for(File file:files){ System.out.println(file); } } public static void File_demo_4() { /** * 重命名 * */ File f1 = new File("d:\a.txt"); File f2 = new File("d:\b.txt"); f1.renameTo(f2);//如果f2 不跟f1相同路径,文件也不存在,会实现剪切; } public static void File_demo_3() { /** * 判断: * */ File f1 = new File("a.txt"); boolean b1 = f1.exists(); f1.isDirectory();//是不是目录 f1.isFile();//是不是文件 } public static void File_demo_2() throws IOException { /** * 创建与删除: * 返回值肯定是boolean; * 注意文件正在被流操作是删不掉的; * */ File file =new File("file.txt"); boolean b = file.createNewFile(); /** * 和输出流不一样,如果文件不存在,则创建,如果存在则不创建 * * * */ boolean b1 = file.delete(); //file.deleteOnExit();叫虚拟机删除,在虚拟机退出时;一定会删除; File file1 = new File("abc\a\c\v\b"); boolean b2 = file1.mkdir(); //创建目录 file1.mkdirs();//创建多级目录 file1.delete();//目录里面有东西是删不掉的 } public static void File_demo_1() throws IOException { /** * 获取: * 文件名称 * 文件路径 * 文件修改时间 * 文件大小 * */ File f = new File("d:\"); File f1 = new File(f,"abc.txt"); String name=f1.getName(); String abspath=f1.getAbsolutePath();//绝对路径 String path= f1.getCanonicalPath();//相对路径 long time = f1.lastModified(); f1.getFreeSpace();//剩余空间 f1.getTotalSpace();//全部空间 f1.getUsableSpace();//已使用空间 long len = f1.length(); Date date = new Date(time); DateFormat dateformate =DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); String str_name = dateformate.format(date); System.out.println(str_name); /** * list();方法获取单签目录下的文件以及文件夹名称,包含隐藏文件。 * 调用list方法的file对象中封装的必须是目录。 * 否则会发生空指针异常 * 如果访问的系统级目录,也会发生空指针异常, * 如果目录存在但是没有内容,会返回一个数组,但是长度为0; * * */ File file = new File("C:\"); String [] names = file.list(); for(String n: names){ System.out.println(n); } } }
package File类; import java.io.File; import java.io.FilenameFilter; public class FilterByJava implements FilenameFilter { private String str; public FilterByJava(String str) { this.str=str; } @Override public boolean accept(File dir, String name) { //File dir接收的是目录,String name接收的是目录下的每个文件及文件夹,FilenameFilter类中自动实现了转换成String类型而不是File类型 return name.endsWith(str); } }
package File类; import java.io.File; /** * 获取磁盘中带有指定后缀名的文件夹 * */ public class FileTest_1 { public static void main(String[] args) { listDemo_2(); } private static void listDemo_2() { File dir = new File("d:\"); File [] names=dir.listFiles(new FilterByJava(".java")); for(File name:names){ System.out.println(name.toString()); } } }
package File类; import java.io.File; public class FileTest_2 { public static void main(String[] args) { File dir = new File("d:\api_java"); int level=0; show(dir,level); } public static void show(File dir,int level) { System.out.println(getSpace(level)+dir.getName()); File[]files = dir.listFiles(); level++; for(File file: files){ if(file.isDirectory()){ show(file,level); }else{ System.out.println(getSpace(level)+file.getName()); } } } public static String getSpace(int level) { final String SPACE=" "; StringBuilder sb = new StringBuilder(); for(int x=0;x<level;x++){ sb.append(SPACE); } return sb.toString(); } }
package File类; import java.io.File; /* * 需求:删除一个含有多级目录的文件夹 * 思路:遍历文件夹 * * */ public class FileTest_3 { public static void main(String[] args) { File file = new File("d:\dir"); removeFile(file); } public static void removeFile(File file) { File[]files = file.listFiles(); for(File name:files){ if(name.isDirectory()){ removeFile(name); }else{ System.out.println(name+":是否被删除:"+name.delete()); } } System.out.println(file+":"+file.delete()); } }