黑马程序员——File类的概述

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

File类的概述和构造方法

File类是什么?有什么用哪?

windows系统上,我们所说的File其实就是一个文件(目录).

就是使用java中提供的File类来映射一个文件。

注意:我们使用File来映射一个文件,只能对文件的属性进行操作,而不能修改文件的内容。如果要对文件的内容进行操作,只能使用

package cn.itcast.file;

import java.io.File;

//创建File对象

//File(String pathname)
//File(String parent,String child)
//File(File parent,String child)

public class FileDemo1 {

	public static void main(String[] args) {

		

		File file = new File("d:/b/c/d/a.txt");
	}

	// 1.使用File(String pathname)来描述d:/a.txt文件
	public static void demo1() {
		// File file = new File("d:\\a.txt");

		// File file=new File("d:/a.txt");

	// 注意:在linux系统中它的分隔符就是"/" 在widnows系统中它的分隔符是"\",在java开发中,可以使用一个/来代替\\

		// 注意:如果想要写一个通用的程序,在任何系统上都可以使用
		File file = new File("d:" + File.separator + "a.txt");
	}

	// 2.使用File(String parent,String child)来描述 d:/a.txt文件
	public static void demo2() {
		File file = new File("d:/a", "a.txt");
	}

	// 3.使用File(File parent,String child)来描述d:/a/a.txt
	public static void demo3() {
		File parent = new File("d:/a"); // 它映射的是d:/a目录

		File file = new File(parent, "a.txt"); // d:/a目录下的a.txt文件。
	}
}

File类的创建功能

<span style="font-size:14px;">package cn.itcast.file;

import java.io.File;
import java.io.IOException;

//介绍File类中的创建方法
//1.创建文件   createNewFile()
//public boolean createNewFile(); 这个方法抛出了IOException异常,我们在使用它时需要处理。
//如果指定的文件的路径错误,抛出异常
//2.创建目录  mkdir();
//public boolean mkdir();
//3.创建目录mkdirs();  用于创建多层目录.
//public boolean mkdirs();

public class FileDemo2 {

	public static void main(String[] args) {
		demo3();
	}

	// 1.创建文件 createNewFile()
	public static void demo1() {
		File file = new File("d:/a.txt"); // 这个文件不存在

		try {
			System.out.println(file.createNewFile());
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	// 2.创建目录
	public static void demo2() {
		File file = new File("d:", "a.txt"); // 这个文件不存在

		file.mkdir();
	}

	// 3.创建多层目录
	public static void demo3() {
		File file = new File("d:/a/b/c");

		System.out.println(file.mkdirs());
	}
}</span>

关于java中文件路径问题

绝对路径:可以简单理解成是c:/xxx  d:/xxx 带盘符

相对路径:它是需要参照物的。

如果我们使用记录本来操作,这时创建的文件与.java在同一目录下。

如果我们使用eclipse它的相对路径,在当前工和下,它是相对于src

注意:我们在使用相对路径是时,经常使用..,它代表的是上一层目录。


File类的高级获取功能

package cn.itcast.file;

import java.io.File;

//File类的高级获取功能
//list
//public String[] list();用于获取当前目录下的所有子的名称的一个字符串数组。
//listFiles
//public File[] listFiles();用于获取当前目录下所有子的一个File数组

public class FileDemo8 {

	public static void main(String[] args) {
		demo1();
	}

	// list方法
	public static void demo1() {		

		File file = new File("c:/a");
		String[] files = file.list();
		
		for(String f:files){
			System.out.println(f);
		}
	}
	
	// listFiles方法
	public static void demo2() {

		File file = new File("c:/a");  
		File[] files = file.listFiles();
		//new File("c:/a/a.txt")  new File("c:/a/b");
		for(File f:files){
			System.out.println(f.getName()); //获取文件名称
		}
	}
}

输出指定目录下指定后缀名的文件名称

package cn.itcast.file;

import java.io.File;

//得到一个指定目录下的指定后缀名的文件
//例如:得到a目录下的所有.java文件名称
public class FileDemo9 {

	public static void main(String[] args) {

	}

	// 使用listFiles方法解决
	public static void demo2() {
		// 分析:
		// 1.定义一个File对象映射a目录
		File file = new File("c:/a");
		// 2.调用list方法得到其下所有子文件的名称
		File[] fs=file.listFiles();
		// 3.判断文件的名称是否以.java结束,如果是将这个名称打印出来。
		for(File f:fs){
			if(f.getName().endsWith(".java")){
				System.out.println(f.getName());
			}
		}
	}

	// 使用list方法解决
	public static void demo1() {
		// 分析:
		// 1.定义一个File对象映射a目录
		File file = new File("c:/a");
		// 2.调用list方法得到其下所有子文件的名称
		String[] fs = file.list();
		// 3.判断文件的名称是否以.java结束,如果是将这个名称打印出来。
		for (String f : fs) {
			if (f.endsWith(".java")) { // 这个是判断文件的后缀是否是.java
				System.out.println(f);
			}

			
		}
	}

}

文件过滤器改进输出指定目录下指定后缀名的文件名称

package cn.itcast.file;

import java.io.File;
import java.io.FileFilter;

//使用文件过滤器来得到指定目录下指定文件
public class FileDemo10 {

	public static void main(String[] args) {
		// 1.定义一个file对象,用于映射a目录
		File file = new File("c:/a");

		// 2.调用listFile方法(有参数)
		File[] fs = file.listFiles(new FileFilter() {

			@Override
			public boolean accept(File pathname) { // accept方法它的参数,就是目录下的所有的子文件,返回值如果为true,代表可以装入到数组中,否则不能装入.

				if (pathname.getName().endsWith(".java")) {
					return true;
				}
				return false;
			}
		});

		// 3.遍历数组,得到文件名称
		for (File f : fs) {
			System.out.println(f.getName());
		}
	}
}

带文件名称过滤器的list()方法的源码
  public String[] list(FilenameFilter filter) {
        String names[] = list();
        if ((names == null) || (filter == null)) {
            return names;
        }
        List<String> v = new ArrayList<>();
        for (int i = 0 ; i < names.length ; i++) {
            if (filter.accept(this, names[i])) {
                v.add(names[i]);
            }
        }
        return v.toArray(new String[v.size()]);}






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值