26. file和字节流

1.File类:文件和目录路径名的抽象表示

2.绝对路径:带盘符的路径.
相对路径:相对其他文件或目录的一个路径叫相对路径.
如果当前文件或目录相对其他盘符的的文件或目录来说,此时相对路径==绝对路径.
如果当前文件或目录相对当前所有在的盘符的文件或目录来说,此时相对路径!=绝对路径.
根路径:相当当前项目的路径.

3.file类常用方法:
public static void main(String[] args) {
//获得文件对象
File f1=new File(“aa\a.txt”);
System.out.println(“文件名:”+f1.getName());
System.out.println(“绝对路径:”+f1.getAbsolutePath());
System.out.println(“相对路径:”+f1.getPath());
System.out.println(“是否可读:”+f1.canRead());
System.out.println(“是否可写:”+f1.canWrite());
System.out.println(“是否隐藏:”+f1.isHidden());
System.out.println(“文件的长度:”+f1.length());
//得到文件最后一次修改时间
Long time1=f1.lastModified();
//创建格式化对象
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//用格式化对象将时间进行格式化成指定格式的字符串
String time2=sdf.format(new Date(time1));

	System.out.println("最后一次修改时间:"+time2);
}

public static void main(String[] args) throws IOException {
	//获得文件对象
	File f1=new File("cc\\bb\\b.txt");
	
	//获得当前文件对象父目录
	File parentFile=f1.getParentFile();
	//判断父目录是否存在
	if (parentFile.exists()) {//父目录存在
		System.out.println("父目录存在");
	} else {//父目录不存在
		//创建一级目录
		//parentFile.mkdir();
		//创建多级目录
		parentFile.mkdirs();
		System.out.println("父目录创建成功");
		
	}
	
	//判断当前文件是否存在
	if (f1.exists()) {//文件存在
		System.out.println("文件存在");
	} else {//文件不存在
		//创建文件
		f1.createNewFile();
		System.out.println("文件创建成功");
	}
}

public static void main(String[] args) throws IOException {
	//获得目录对象
	File f1=new File("cc");
	
	//判断当前目录是否存在
	if (f1.exists()) {//当前目录存在
		//获得当前目录所有子文件或子目录的字符串形式
		String[] childFiles=f1.list();
		//遍历子文件或子目录
		for (String child : childFiles) {
			//判断子文件或子目录是否以.txt结尾
			if (child.endsWith(".txt")) {
				System.out.println(child);
			}
		}
		
	} else {
		System.out.println("当前目录不存在");
	}
}

4.递归:方法自身调用自身.
4.1:可以将原问题拆分成若干子问题,子问题的解决方法与原问题的解决方法一样.
4.2:原问题的解决依赖于所有子问题的解决.
4.3:递归一定要有出口.
eg:/**

  • 2.获得指定目录下所有以.txt结尾的文件(子文件,孙子文件,子子孙孙)

  • @author sx

  • @version 2020年3月16日
    */
    public class FileTest4 {

    public static void main(String[] args) throws IOException {
    //获得目录对象
    File f1=new File(“cc”);
    if (f1.exists()) {
    //调用递归方法
    digun(f1);
    } else {
    System.out.println(“目录不存在”);
    }
    }

    /**

    • 判断当前目录的子文件是否以.txt结尾
    • @param f
      */
      public static void digun(File f) {
      //获得当前目录的子文件或子目录
      File[] files=f.listFiles();
      //遍历所有子文件和子目录
      for (File f2 : files) {
      if (f2.isDirectory()) {//当前遍历的是子目录
      digun(f2);//调用自身
      }else{//当前遍历的是子文件
      if (f2.getName().endsWith(".txt")) {
      System.out.println(f2.getName());
      }
      }
      }
      }
      }

5.过滤器:将需要数据留下来,不需要数据过滤掉.
/**

  • 自定义文件过滤器类
  • @author sx
  • @version 2020年3月16日
    /
    public class MyFilter implements FilenameFilter{
    /
    *
    • 过滤方法
    • @param dir 要过滤文件对象
    • @param name要过滤文件名
      */
      @Override
      public boolean accept(File dir, String name) {
      if (name.endsWith(".txt")) {
      return true;
      } else {
      return false;
      }
      }
      }

public static void main(String[] args) throws IOException {
//获得目录对象
File f1=new File(“cc”);

	//判断当前目录是否存在
	if (f1.exists()) {//存在
		//创建一个过滤器对象
		FilenameFilter mf=new MyFilter();
		//用过滤器获得当前目录下满足条件以.txt结尾子文件
		String[] files=f1.list(mf);
		//遍历输出
		for (String f2 : files) {
			System.out.println(f2);
		}
	} else {
		System.out.println("目录不存在");
	}

}

回顾:
1.file类常用方法:getName(),canRead(),canWrite(),getPath(),getAbsolutePath(),
isHidden(),lastModify(),exists(),mkdir(),mkdirs(),delete(),length(),createNewFile(),
list(),getParentFile()

おすすめ

転載: blog.csdn.net/qq_44949002/article/details/119943304