黑马程序员——java的IO之File类

------- android培训java培训、期待与您交流! ----------

前言:通过观看毕向东老师的java基础视频,查漏补缺,将一些自己掌握的还不牢固的知识写出来,希望和大家交流分享。

对于Java的IO的掌握就比较薄弱,需要多花点功夫。File类是相对简单的类,先从它开始。

File——文件类

1. File类所在的位置:java.io

2. File类作用:文件和目录路径名的抽象表现形式,即是对文件和文件夹的描述。用来将文件或文件夹封装成对象,方便于对文件与文件夹的属性信息进行操作。

3. 特点:

    1)对文件的路径的描述,不同的操作系统平台不同。对于 UNIX 平台,绝对路径名的前缀始终是 "/"。对于 Microsoft Windows 平台,包含盘符的路径名前缀

      由驱动器号和一 个 ":" 组成。如果路径名是绝对路径名,还可能后跟"\\"或"/"。在java中"\"表示转译。

    2)File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。

    3)File对象可以作为参数传递给流的构造函数。

4.File类字段摘要

   说明:类中的字段都是常量。

   四个字段:

   1)static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。在Windows下是";"

   2)static char pathSeparatorChar 与系统有关的路径分隔符。在Windows下是";"可以联想到之前配置的环境变量。

   3)static String separator  与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。Windows下是"\"

   4)static char separatorChar 与系统有关的默认名称分隔符。Windows下是"\"。

5.File类对象的创建

   1)方式一:File f =new File("D:/v5/87.txt");通过将给定路径名字符串转换为抽象路径名来创建一个新File 实例。

   2)方式二:File f=newFile("D:/v5","87.txt");根据 parent 路径名字符串和 child路径名字符串创建一个新File 实例。

   3) 方式三: File f=new File("D:/v5");File f3=newFile(d,"87.txt");将文件目录路径封装成对象。再创建文件对象。降低了文件于父目录的关联性。

   4)方式四:File f = new File("http://java.sun.com/j2se/1.3"); 通过将给定的file: URI 转换为一个抽象路径名来创建一个新的File 实例。这得到是网上的文件。

6、File类常用方法

   1)文件及文件夹的创建:

      1. 创建文件:booleancreateNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,创建一个新的空文件。在创建前如果不存在该文件返回true否则返回false。

    File f =new File("D:/v5/songwenju.txt");
    Boolean b = f.createNewFile();//throws IOException
    System.out.println(b);//之前不存在的情况下是true

      2. 创建文件夹:已经存在的目录D:/v5在已经存在的目录下创建单个文件夹:mkdir() 创建此抽象路径名指定的目录。当已创建目录时,返回true;否则返回false

   f =new File("D:/v5/songwenju");
   b = f.mkdir();
   System.out.println(b);

   在已经存在的目录下创建多层文件夹:创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分

     必需的父目录。当且仅当已创建目录以及所有必需的父目录时,返回 true;否则返回false

   f=new File("D:/v5/songwenju/a");
   b = f.mkdirs();
   System.out.println(b);

   2)文件和文件夹的删除

      boolean delete();删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。

      deleteOnExit();虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

   f =new File("D:/v5/songwenju/a");
   b = f.delete();    
   b = f. deleteOnExit();

   3)属性的判断

   boolean canExecute();//是否是可执行文件
   boolean canRead();//是否可读
   boolean canWrite();//是否可写
   boolean exists();//文件是否存在
   boolean isFile();//是否是文件
   boolean isDirectory();//是否是文件夹
   boolean isHidden();//是否是隐藏文件
   boolean isAbsolute();//文件是否是绝对路径

   4)获取文件或文件夹的一些信息

   StringgetName();//获取文件名。
   String getPath(); //获取文件的相对路径。(创建的对象传入的参数)
   String getParent();//获取文件父目录。返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果。
   String getAbsolutePath();//获取文件的绝对路径 。  
   long lastModified();//返回文件最后一次被修改的时间。
   long length();//返回文件大小。

    5)列出文件以及文件的过滤

   1.String[] list(); //列出当前目录下所有文件,包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
   2.File[] listFiles();//返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹
   //说明:以上两个方法的作用一致,不同的是返回类型不一样。
   3.File[] ListFiles(FilenameFilterfilter);//返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。
    //FilenameFilter:文件名过滤器,是一个接口,其中包含accept(Filedir,String name) 方法,返回的是boolean型,对不符合条件的文件过滤掉。
   4.static File[] listRoots();//列出可用的文件系统根目录,即系统盘符

7.与文件操作有关的典型练习

  1) 列出一个文件夹下的所有以.java为后缀的文件。

package file;
import java.io.File;
import java.io.FilenameFilter;
/**
 * 列出一个文件夹下的所有以.java为后缀的文件。
 * @author songwenju
 *  思路:1.利用  String[]list(FilenameFilter filter)这个方法
 *     2.实现FilenameFilter接口的匿名内部类accept。
 *     3.遍历输出
 *
 */
public class GetJavaFile {
    publicstaticvoidmain(String[] args) {
       File file =new File("D:/v5");
       getJavaFile(file);
    }   
    /**
     * 获取一个目录下所有.java结尾的方法。
     * @param dir
     */
    publicstaticvoidgetJavaFile(File dir){      
       String [] javaFile = dir.list(new FilenameFilter() {
           //覆写FilenameFilter接口中的匿名内部类
           @Override
           publicbooleanaccept(File dir,String name) {
              //保留以.java结尾的文件信息
              return name.endsWith(".java");
           }
       });
       System.out.println("len:"+javaFile.length);
       for (String string : javaFile) {
           System.out.println(string);
       }
    }
}
运行结果:


2. 列出一个文件中所有的内容

package file;

import java.io.File;

/**
 * 列出一个文件夹中所有的内容
 * @author songwenju
 *    思路:1.先得到该文件夹中所有的文件
 *        2.逐个判断是否是文件夹,如果是输出文件夹名再得到该文件夹的内容。如果不是则直接输出。
 */
public class ListAllFile {
    public static void main(String[] args) {
        File file = new File("d:/v5/songwenju");
        listAllFile(file);
    }
    /**
     * 用递归的方法列出文件夹中所有内容
     * @param dirs
     */
    public static void listAllFile(File dirs){
        //得到该目录下的所有文件和文件夹
        File[]files = dirs.listFiles();
        for (File file : files) {
            //输出数组中所有的内容
            System.out.println(file);
            //如果其中一个是文件夹则列出该文件夹中所有内容
            if (file.isDirectory()) {
                listAllFile(file);
            }
        }
    }
}

运行结果:


3. 删除一个带内容的目录。

 

package file;

import java.io.File;

/**
 * 删除一个带内容的目录。
 * @author songwenju
 *
 */
public class DeleteDirs {
	public static void main(String[] args) {
		//指定要删除的目录
		File file = new File("D:/v5/songwenju");
		deleteDirs(file);
	}
	
	/**
	 * 利用递归删除该目录下的所有内容
	 * @param dirs
	 */
	public static void deleteDirs(File dirs){
		//得到该目录下的所有文件和文件夹
		File[] files = dirs.listFiles();
		//逐个遍历
		for (File file : files) {
			//如果没有隐藏或是目录的话
			if (!file.isHidden()&&file.isDirectory()) {
				deleteDirs(file);
			}else {
				//删除文件
				System.out.println(file+"------>file delete is:"+file.delete());
			}
		}
		//删除目录
		System.out.println(dirs+"----->dirs delete is:"+dirs.delete());
	}
}

运行结果:

------- android培训java培训、期待与您交流! ----------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值