1、将文件系统中的文件或文件夹封装成对象,提供属性和方法对文件进行操作
2、方法:
creatNewFile();创建文件,若存在则不创建,返回false。(输出流则是有无都创建)
boolean mkdir();创建一级文件夹;mkdirs();创建多级文件夹
boolean delete();删除文件;deleteOnExit()程序结束前删除文件
boolean canExecute():是否可被执行;boolean exists():文件是否存在
boolean isFile():是否是文件;isDirectory():是否是文件夹
boolean isHidden():是否是隐藏文件;isAbsolute():路径是否是绝对路径
String getName():文件名;String getPath():相对路径
String getParent():绝对路径的父目录,无则返回null,有上一级则返回上一级
String getAbsolutePath():获取绝对路径
boolean renameTo(File dest);:对文件重命名为dest
String[] list():列出当前目录所有文件名。目录必须存在
File[] list(FileNameFilter filter):对指定文件进行过滤,需实现FileNameFilter文件名过滤器
File[] listFiles():获取当前文件夹下的文件和文件夹
/** * File类 * @author Administrator * */ import java.io.*; public class FileDeom1 { public static void main(String[] args) { consMethod(); } //创建File对象 public static void consMethod() { //将a.txt封装成file对象,可以将已有的和未出现的文件或文件夹封装成对象 File f1 = new File("a.txt"); //第二种方式, 可以将文件名封装 好处 文件名可以为变量 File f2 = new File("c:\\abc","b.txt"); //第三种 将路径封装 File d = new File("c\\abc"); File f3 = new File(d,"c.txt"); sop("f1:" + f1); sop("f2:" + f2); sop("f3:" + f3); //File.separator 是路径分割符 可以跨平台 File f4 = new File("c:"+File.separator +"abc" +File.separator +"zzz" + File.separator +"a.txt"); sop("f4:" + f4); } public static void sop(Object obj) { System.out.println(obj); } }
***************************************************邪恶的分割线**********************************************************************************************************************
import java.io.*; /** * File类常见方法: * 1, 创建, * boolean createNewFile(): 在指定位置创建文件,如果该文件已经存在, * 则不创建,返回false。和输出流不一样,输出流对象一定建立创建文件。 * 而且文件已经存在,会覆盖。 * * boolean mkdir(): 创建文件夹 * * boolean mkdirs(); 创建多级文件夹 * 2, 删除。 * boolean delete(): 删除失败返回false 删除指定文件 * void deleteOnExit():在程序退出时删除指定文件。 * * 3,判断。 * boolean existe(): 判断文件是否存在 * ifFile(): 判断是否是文件 * isDirectory(): 判断是否为文件夹 * isHidden(): 判断是否为隐藏文件 * * 4 获取信息。 * * getName();获取文件或目录的名称 * getPath();获取路径名 转换为路径字符串 * getParent(); 返回路径名父目录的路径名字符串,如果没有有返回null * * getAbsolutePath():获取绝对路径(返回字符串) * lastModified(): 获取最后一次修改的时间 * length() 文件大小 * * @author Administrator * */ public class FileDemo2 { public static void main(String[] args) throws IOException { //method_1(); //method_2(); //method_3(); //method_4(); //method_5(); method_6(); } public static void method_1()throws IOException//调用底层要抛异常 { //创建文件对象 File f = new File("file.txt"); //程序退出的时候删除指定文件 这里是对象 f.deleteOnExit(); //建立文件 返回boolean类型 //sop("create :" + f.createNewFile()); //删除指定文件 返回boolean类型 sop("delete: " + f.delete()); } public static void method_2() { File f = new File("file.txt"); //判断文件是否存在 sop("existe:" + f.exists()); //判断文件是否能执行 //sop("execute:" + f.canExecute()); } public static void method_3() { //创建文件夹, mkdir最多创建一级目录 File dir = new File("abc\\kk"); sop("mkdir: " + dir.mkdir()); //创建多级文件夹 dir.mkdirs() //sop("mkdir: " + dir.mkdirs()); } public static void method_4() { File f = new File("file.txt"); //判断文件对象是否是文件或者目录时,必须要先判断该文件 //对象的内容是否存在 通过,exists判断 //判断是否目录(文件夹) sop("dir:" + f.isDirectory()); //判断是否是文件 sop("file" + f.isFile()); } public static void method_5() { File f = new File("file.txt"); //获取相对路径 sop("path:" + f.getPath()); //获取绝对路径 sop("abspath" + f.getAbsolutePath()); //该方法返回的是绝对路径父目录,如果获取的是相对路径,返回null sop("parent:" + f.getParent()); } public static void method_6() { //建立对象 File f1 = new File("D:/Student/java/test/demo.txt"); File f2 = new File("D:/Student/java/test/demo2.txt"); //改变文件的名字 将demo.txt 变成demo2.txt sop("rename: " + f1.renameTo(f2)); } public static void sop(Object obj) { System.out.println(obj); } }
***************************************************邪恶的分割线**********************************************************************************************************************
import java.io.File; //listRoots 列出可用的文件系统根。 //list 列出指定目录下的所有可用文件 //listFiles(FileFilter filter) public class FielDemo3 { public static void main(String[] args) { //listRootsDemo(); listDemo(); } //列出机器里面的有效盘符 public static void listRootsDemo() { File[] files = File.listRoots(); for(File f: files) { System.out.println(f); } } //c盘下的目录 相当于dos 下 的 dir指令,不过可以看到隐藏文件 public static void listDemo() { //只在c盘下 File f = new File("c:\\"); //调用list方法中的file对象必须封装了了一个目录,该目录必须存在 String[] names = f.list(); //for循环增强 for(String name : names) { System.out.println(name); } } }
***************************************************邪恶的分割线**********************************************************************************************************************
/** * 列出目录文件下 .java 的所有文件 文件名过滤 * @author Administrator * */ import java.io.*; public class FileDemo4 { public static void main(String[] args) { method_1(); //method_2(); } public static void method_1() { File dir = new File("D:\\Student\\java\\test"); // 将目录的文件给字符串数组 、、传的是匿名内部类 String[] arr = dir.list(new FilenameFilter() { public boolean accept(File dir, String name) { // return true; /* * if(name.endsWith(".bmp")) { return true; } return false; */ // endWith 方法 返回结尾是否是参数里的真假 return name.endsWith(".java"); } }); System.out.println("len:" + arr.length); // for循环增强 输出目录中文件 for (String name : arr) { System.out.println(name); } } //第二种 使用listFiles 经常用这种 public static void method_2() { File dir = new File("D:\\Student\\java\\test"); File[] files = dir.listFiles(); for(File f : files) { System.out.println(f.getName() + ":" + f.length()); } } }
***************************************************邪恶的分割线**********************************************************************************************************************
/** * 需求:列出指定目录下文件或者文件夹,包含子目录的内容。 * 也就是列出指定目录下所有内容(使用递归的方法) * @author Administrator * */ import java.io.*; public class FileDemo5 { public static void main(String[] args) { // 创建文件对象 File dir = new File("D:/Student/java/test"); showDir(dir); } public static void showDir(File dir) { // 提前打印出是哪个目录的 System.out.println(dir); // 将文件对象传递给 文件数组 files File[] files = dir.listFiles(); for (File f : files) { // 如果是目录 递归调用 if (f.isDirectory()) { showDir(f); } else { System.out.println(f); } } } }
***************************************************邪恶的分割线**********************************************************************************************************************
/** * 需求:删除一个带内容的目录 * 删除原理: * 在window中,删除目录是从里面往外删除的。 * * 既然是从里面往外删除,就需要用到递归。 * * @author Administrator * */ import java.io.*; public class FileDemo6 { public static void main(String[] args) { File dir = new File("D:\\Student\\java\\Test2\\test"); removeDir(dir); } // 删除文件 public static void removeDir(File dir) { File[] files = dir.listFiles(); for (File f : files) { // 如果删除的是目录 那么递归调用删除方法 if (f.isDirectory()) { removeDir(f); } // 如果是文件那么删除 else { System.out.println(f.toString() + "::" + f.delete()); } // 一次递归结束 删除文件夹 System.out.println(dir + "::dir::" + dir.delete()); } } }
***************************************************邪恶的分割线**********************************************************************************************************************
/** * 需求: 将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。 * * 建立一个java文件列表 * * 思路: * 1, 对指定的额目录进行递归。 * 2, 获取递归过程所有的java文件的路径。 * 3, 将这些路径存储到集合中。 * 4, 将集合中的数据写入到一个文件中。 * * @author Administrator * */ import java.io.*; import java.util.*; public class FileDemo7 { public static void main(String[] args) throws IOException { //文件路径封装成对象 File dir = new File("D:/Student/java"); //创建集合 List<File> list = new ArrayList<File>(); fileToList(dir, list); // System.out.println(list.size()); File file = new File(dir, "javalist.txt"); writeToFile(list, file.toString()); } // 传递 参数 为: 一个是文件对象, 一个是容器list public static void fileToList(File dir, List<File> list) { // 将所有文件对象给 文件数组 files File[] files = dir.listFiles(); // 对文件数组进行遍历 for (File f : files) { // 判断是否目录 if (f.isDirectory()) { // 如果是目录 递归调用 fileToList(f, list); } else // 不是目录0 { // 获取名字 判断扩展名 if (f.getName().endsWith(".java")) ; list.add(f);// 如果是java文件存入容器中 } } } // 把容器中的数据写入到文件 public static void writeToFile(List<File> list, String javaListFile) { // 定义写入缓冲流 BufferedWriter bufw = null; try { // 将缓冲流写入 这里包装了一下 bufw = new BufferedWriter(new FileWriter(javaListFile)); for (File f : list) { // 循环的将路径名赋值给 字符串 path String path = f.getAbsolutePath(); // 写入文件 bufw.write(path); // 换行 bufw.newLine(); // 刷新缓冲区 bufw.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { // 关闭流 bufw.close(); } catch (IOException e) { e.printStackTrace(); } } } }
***************************************************邪恶的分割线**********************************************************************************************************************
改名字,把.java改成.jad
import java.io.File; public class RemoveFileTest { public static void main(String[] args) { File source = new File("d:/jad"); File[] files = source.listFiles(); for(File f : files) { String name = f.getName(); String newName = name.replace(".java", ".jad"); File oldFile = new File(source,name); File newFile = new File(source,newName); boolean t =oldFile.renameTo(newFile); System.out.print(t); } } }