day06-File

版权声明:来自等待or进取的博客 https://blog.csdn.net/qq_39466683/article/details/82623421

File

  1. File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
  2. File的每一个实例可以用于表示文件系统中的一个文件或目录。
  3. java.io.File
  4. 作用:
    ·访问文件或目录的属性(名字、大小、修改时间)
    ·操作文件或目录(创建、删除)
    ·访问一个目录的子项
  5. 但是不能读写文件数据。
  6. Windows:D:/JavaDev/workspace/ND09/demo.txt
    Linux:home/……/workspace/ND09/demo.txt
    路径尽量选取相对路径,不同系统的路径方式不同,相对路径可以做到跨平台。
  7. 构造方法:
    ~File(URI uri) :
           通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
    ~File(String pathname) :
           通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
    ~File(String parent, String child):
           根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
    ~File(File parent, String child) :
           根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
  8. 方法:
    ~canRead():
           测试应用程序是否可以读取此抽象路径名表示的文件。
    File file = new File("./demo.txt");
    boolean cr = file.canRead();
    System.out.println("canRead:"+cr);
    ~canWrite():
           测试应用程序是否可以修改此抽象路径名表示的文件。
    File file = new File("./demo.txt");
    boolean cw = file.canWrite();
    System.out.println("canWrite:"+cw);

    ~createNewFile():
           当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

    File file =new File("./test.txt");	
    if(!file.exists()) {
    	file.createNewFile();
    	System.out.println("创建完毕");
    }else {
    	System.out.println("文件存在");
    }


    ~delete():
            删除此抽象路径名表示的文件或目录。

    /*
     * 将当前目录中的text.txt
     */
    File file = new File("./test.txt");
    if(file.exists()) {
    	file.delete();
    	System.out.println("删除完毕");
    }else {
    	System.out.println("不存在");
    }
    //删除目录
    File file = new File("./demo");
    if(file.exists()) {
    	file.delete();//demo是空目录 可以用delete()
    	System.out.println("删除完毕");
    }else {
    	System.out.println("目录不存在");
    }
    File file1 = new File("./a/b/c/d/e/f");//删除f目录
    if(file1.exists()) {
    	file1.delete();//demo是空目录 可以用delete()
    	System.out.println("删除完毕");
    }else {
    	System.out.println("目录不存在");
    }	
    /**
     * 删除目录
     * 由于delete()方法删除目录时要求必须是一个空目录
     * 那么在实际情况中,我们需要先将一个删除的目录清空才可以将其删除
     */
    public static void main(String[] args) {
        File file = new File("./a");
        delete(file);
    }
    /**
     * 
     * 删除给定的File所表示的文件或目录
     * 
     * 递归调用:
     * 方法内部调用自己方法的现象称为低估调用
     * 避免使用递归,随着递归的次数增加,内存开销较大
     * 
     * 使用递归:
     * 1.递归现象必须在一个分支中控制
     * 2.层级尽量少
     * @param file
     */
    public static void delete(File file) {
    	if(file.isDirectory()) {
    		/*
    		 * 先将目录清空
    		 * 1.获取该目录中的子项
    		 * 2.遍历将他们一个一个删除
    		 * 
    		 */
    		File[] subs = file.listFiles();
    		for (int i = 0; i < subs.length; i++) {
    			File sub = subs[i];
    			delete(sub);
    		}
    	}
    	file.delete();
    }

    ~exists():
           测试文件或目录是否存在。

    File file = new File("./demo.txt");
    boolean ex = file.exists();
    System.out.println("exists:"+ex);

    ~getName():
           返回由此抽象路径名表示的文件或目录的名称。

    File file = new File("./demo.txt");
    String name = file.getName();
    System.out.println("name:"+name);

    ~isDirectory():
           测试此抽象路径名表示的文件是否是一个目录。
    ~isFile() :
           测试此抽象路径名表示的文件是否是一个标准文件。
    ~isHidden():
           测试此抽象路径名指定的文件是否是一个隐藏文件。
    ~length():
           返回由此抽象路径名表示的文件的长度。
    ~listFiles():
           返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

    /*获取当前目录(项目目录)中的所有子项*/
    File dir = new File(".");
    /* boolean isFile()
     * boolean isDirectory()
     */
    if(dir.isDirectory()) {
    //			获取所有子项
    	File[] subs = dir.listFiles();
    	for (int i = 0; i < subs.length; i++) {
    		System.out.println(subs[i].getName());
    	}
    }

    ~重载listFile():

    /*File提供了一个重载listFiles方法,可以指定一个文件过滤器,然后将一个目录中满足过滤器要求的子项返回。*/
    public class ListFilesDemo2_09 {
    	public static void main(String[] args) {
    		File file = new File(".");
    //		File[] subs = file.listFiles(new MyFilter());
    		
    //		lambda之后讲
    //		匿名内部类
    		File[] subs = file.listFiles(new FileFilter() {
    			public boolean accept(File file) {
    				return file.getName().endsWith(".txt");
    			}
    		});
    		System.out.println("length:"+subs.length);
    		for (int i = 0; i < subs.length; i++) {
    			System.out.println("已过滤:"+subs[i].getName());
    		}
    	}
    
    }
    class MyFilter implements FileFilter{
    	public boolean accept(File file) {
    		String name = file.getName();
    		System.out.println("正在过滤:"+name);
    		return name.endsWith(".txt");
    //		return file.isFile();  返回文件
    	}
    	
    }


    ~mkdir():
           创建此抽象路径名指定的目录。
    ~mkdirs():
           创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

    File dir = new File("./demo");
    if(!dir.exists()) {
    	dir.mkdirs();
    	System.out.println("目录创建成功");
    }else {
    	System.out.println("目录存在");
    }

 

​​

猜你喜欢

转载自blog.csdn.net/qq_39466683/article/details/82623421