IO---File类

File类

位于java.io.File;包中,是文件或者目录的抽象表示。

  File类有四个构造函数:

  File(String pathname)

  File(File parent, String child)

  File(String parent, String child)

  File(URI uri)

注意:路径分隔符:c:\\com适合windows系统,c:/com

常用方法

		File file = new File("c:/1.txt");
		
		//判断文件是否存在
		if(!file.exists())
		{
			try {
				file.createNewFile();//创建文件
				
				System.out.println(file.isFile());//是否是文件
				System.out.println(file.isDirectory());//是否是目录
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		File dir = new File("C:/temp/test");
		
		dir.mkdir();//创建目录,必须上一级目录存在,即最底层目录前面的目录全都存在
		dir.mkdirs();//目录一次性全都创建好
		
		File[] fileArray = dir.listFiles();//返回抽象路径名下的所有文件
		String[] strArray = dir.list();//返回抽象路径名表示目录下的文件名和目录名
		
		System.out.println(dir.getName());//返回文件名
		System.out.println(dir.getParent());//返回父目录名
		

        前面提到File类对象既可以是文件也可以是目录,创建文件是createNewFile()方法,相对应的,创建目录即调用mkdir()方法。

       File类是不对称的,说它不对称,意思是虽然存在允许验证一个简单文件对象属性的很多方法,但是没有相应的方法来修改这些属性,即有get无set。

  另外,File类还可以对目录和文件进行删除(删除目录时,目录必须为空时才能删除)、属性修改等工作。方法名都比较直观,在此不多做介绍了,可以查看java API进行了解。

FilenameFilter

使用FilenameFilter过滤文件:希望能够限制由 list() 方法返回的文件,使它仅返回那些与一定的文件名方式或者 过滤器(filter) 相匹配的文件。FilenameFilter
中有一个 accept() 方法,只有该方法判断为true的文件名会被list方法返回。所以可以在accept方法中设置筛选规则。(策略模式)
		File dir = new File("C:/temp/test");
		
		/*
		 * 使用文件过滤器
		 * 采用匿名内部类(Anonymous Inner Class)
		 * 匿名内部类会隐式地继承一个父类或实现一个接口。
		 * 只有accept为true的文件名会被返回到数组中
		 */
		String[] selectedNames = dir.list(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				
				if(name.endsWith(".java")) return true;
				return false;
			}
		});
		
		//打印输出
		for(String name : selectedNames)
		{
			System.out.println(name);
		}



你可能感兴趣的:(java,File,FilenameFilter)