java IO中File和FilenameFilter

一、File几种常见用法:

		File path=new File("D:\\睿思");
		String[] list=path.list();
		System.out.println(Arrays.toString(list));
		// TODO Auto-generated method stub
		
		File file1=new File("D:\\eclipse project\\ThinkingInJava\\java IO文件夹及文件创建\\me\\file1.txt");
		//创建文件需要加异常处理
		try {
			file1.createNewFile();
		} catch (IOException e) {
			System.out.println("文件路径不存在");
		}
		File file2=new File("D:\\eclipse project\\ThinkingInJava\\java IO文件夹及文件创建\\file2");
		boolean b=file1.mkdir();
		System.out.println(b);
		file1.mkdirs();//可以创建多层文件夹,都是返回boolean类型
		file2.mkdir();//只能创建最后一层文件夹,若前面的不存在,则无法创建成功

总结几种方法:

常用方法,创建文件或者文件夹,如果没有写盘符路径,默认在项目路径里面创建

public boolean createNewFile() throws IOException,当File对象不存在时,创建一个File对象(File对象的路径下)的文件,返回true,当File对象对应的文件存在时,不创建,返回false

public boolean mkdir() 创建File对象的抽象路径名指定的目录文件夹,只创建路径最后的那个文件夹,比如"I:\\hello\world"。如果hello文件夹不存再,则不会创建world文件夹,hello文件夹存在,world才能创建.
 public boolean mkdirs()创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。这两个方法只能创建目录,不管File对象的路径名以什么结尾,比如"I:\\hello\\world.doc",会创建多层文件夹,最后一层文件夹的名字是world.doc,注意不是word文档

重命名或者删除文件/文件夹

public boolean renameTo(File dest)对文见的抽象路径名进行重命名,参数是File对象,而不是字符串,如果两个File对象的路径不相同,则会将被修改的文件进行剪切,然后再重命名放到新的路径里面

public boolean delete()删除File对象对应的文件或者文件夹,删除时不会放入回收站,当File对象是文件夹时,要确保被删除的文件夹里面没有其他文件才可以进行删除成功

判断方法:

public boolean isDirectory():判断File对象是否是目录

public boolean isFile():判断File对象是否是文件

public boolean exists():判断File对象是否存在

public boolean isHidden():判断File对象是否被隐藏

其他常用方法

public String getName()返回文件或目录的名称,如果创建File对象时传入的路径有多级路径,只显示最后一层

 public String getPath()获取File对象的路径名组成的字符串,即创建对象时传入的路径(绝对路径或者相对路径)

public String getAbsolutePath():获取File对象的绝对路径

public long length():获取File对象对应文件的大小。返回字节数

public long lastModified():获取最后一次的修改时间,毫秒值,可格式化成时间

public String[] list():获取文件路径(同一层级目录)下所有文件名)

public String[] list(FilenameFilter filter)获取文件路径(同一层级目录)下的通过满足指定过滤器的文件名/文件夹名组成的字符串数组

public File[] listFiles():获取文件路径下同级文件的File对象数组

public File[] listFiles(FileFilter filter)获取文件路径下同级文件的满足特定过滤器的File对象数组

获取当前目录

		//得到当前目录方法一
		String curDir=System.getProperty("user.dir");
		System.out.println(curDir);
		
		//得到当前目录方法二,记得dir.getCanonicalPath()要添加异常处理
		File dir=new File(".");
		System.out.println(dir.getAbsolutePath());
		try {
			System.out.println(dir.getCanonicalPath());
		} catch (IOException e) {
			System.out.println("未找到相对路径");
		}
		
		File directory = new File("");//设定为当前文件夹 
		System.out.println(directory.getAbsolutePath());
		try {
			System.out.println(directory.getCanonicalPath());
		} catch (IOException e) {
			System.out.println("未找到相对路径");
		}
结果:
D:\eclipse project\ThinkingInJava\.
D:\eclipse project\ThinkingInJava
D:\eclipse project\ThinkingInJava
D:\eclipse project\ThinkingInJava

二、FilenameFlilter和FileFilter,两个用法如下

public String[] list(FilenameFilter filter)
public File[] listFiles(FileFilter filter)

过滤当前文件夹,找到.java文件类型的文件。使用匿名内部类,代码如下

		File path1=new File("D:\\eclipse project\\ThinkingInJava\\src");
		String[] list1=path1.list(new FilenameFilter() {
			public boolean accept(File dir,String name) {
				File file=new File(dir,name);
				if(file.isFile()&&file.getName().endsWith(".java"))
					return true;
				return false;
			}
		});
		Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
		for(String dirItem:list1)
			System.out.println(dirItem);
		

猜你喜欢

转载自blog.csdn.net/qq_33605294/article/details/87868639