Java基础学习---File类

知识概要

1.File类简介

File 文件对象
   定义:文件和目录路径名的抽象表示(文件或者文件夹的抽象表示),既可以是文件也可以是路径;

  •   4种构造函数:

构造函数描述
File(File parent,String child) 从父抽象路径名和子路径名 字符串创建新的File实例
File(String pathname)通过将给定的路径名字字符串转换为抽象路径名来创建新的File实例
File(String parent,String child)从父路径名字字符串和子路径名字符串创建新的File实例
File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例

  • 构造函数的使用:
package cn.tedu.file;

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

public class Constructor {
	public static void main(String[] args) throws IOException {
		// 前三种构造函数的使用
		File file1 = new File("E:/Test/hello");
		File file2 = new File(file1, "hello2");
		File file3 = new File("E:/Test/", "hello3");
	}
}

  • 理解误区:

      1.File file1 = new File("E:/Test/hello"); 构造一个file对象,至于这个file存不存在就不知道了,可用exits()方法验证。

      2. File file1 = new File("E:/Test/hello.text"); 构造一个file对象,并不一定是文件,也有可能是目录;它取决于创建语句是

               file1.createNewFile();  还是 file1.mkdir(); 前者创建的是文件,后者创建的是目录;


  • 路径表示细节(容易出错)

       1.window下使用正斜杠(/)为分隔符,也可使用反斜杠(但是一定得成双使用,因为‘\’是转移符)

       2.linux 下默认正斜杠(/)

       3.File.separator表示一个斜杠,与系统相关的斜杠

       4.注意:目录路径中的冒号一定要是英文冒号,所有的都是英文状态的符号

    举例:

                File file1 = new File("E:\\Test\\hello");
		File file2 = new File("E:/Test/hello2");
		File file3 = new File("E:"+File.separator+"Test"+File.separator+"hello2");
		file1.mkdir();


2.File类方法

常用方法    JAVA API帮助文档

MethodsTypeDescription
canRead()boolean测试应用程序是否可以读取由此抽象路径名表示的文件
canWrite()boolean测试应用程序是否可以修改由此抽象路径名表示的文件
createNewFile()boolean当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件
delete()boolean删除由此抽象路径名表示的文件或目录
exists()boolean测试此抽象路径名表示的文件或目录是否存在
getAbsolutePath()String返回此抽象路径名的绝对路径名字符串
getName()String返回由此抽象路径名表示的文件或目录的名称
getPath()String将此抽象路径名转换为路径名字符串
isAbsolute()boolean测试这个抽象路径名是否是绝对的
isDirectory()boolean测试此抽象路径名表示的文件是否为目录
isFile()boolean测试此抽象路径名表示的文件是否为普通文件
isHidden()boolean测试此抽象路径名命名的文件是否为隐藏文件
lastModified()long返回此抽象路径名表示的文件上次修改的时间
length()long返回由此抽象路径名表示的文件的长度
listFiles()File[ ]返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件
listFiles(FileFilter filter)File[ ]返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录
mkdir()boolean 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
renameTo(File dest)boolean 重命名由此抽象路径名表示的文件
setReadable(boolean readable)boolean一种方便的方法来设置所有者对此抽象路径名的读取权限
setReadOnly()boolean标记由此抽象路径名命名的文件或目录,以便只允许读取操作
setWritable(boolean writable)boolean一种方便的方法来设置所有者对此抽象路径名的写入权限
toString()String返回此抽象路径名的路径名字符串

没有列举所有方法,大部分用得着的方法都有;


3.对文件的各种操作

package cn.tedu.file;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class file {
	public static void main(String[] args) throws IOException {
		File file = new File("E:\\Test\\hello.text");
		file.createNewFile();
		//测试file
		System.out.println(file.exists());
		System.out.println(file.isFile());
		System.out.println(file.isDirectory());
		System.out.println(file.isHidden());
		System.out.println(file.isAbsolute());
		System.out.println(file.canRead());
		System.out.println(file.canWrite());
		//操作file
		System.out.println(file.getName());
		System.out.println(file.getPath());
		System.out.println(file.getAbsolutePath());
		System.out.println(file.setReadable(true));
		System.out.println(file.setWritable(true));
		System.out.println(file.setReadOnly());
		System.out.println(new Date(file.lastModified()));
		System.out.println(file.length());
		System.out.println(file.delete());
	}
}

在线测试


4.文件过滤器    

listFiles(FileFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录

通过一个练习学习文件过滤器:

   题目:查询工程项目下任意一个包下.java结尾的文件,输出相关信息

用三种方法实现:

   Method1:遍历过滤

package com.hbeu.file;

/*
 * 练习:查询包cn.tedu.file下.java结尾的文件,输出相关信息 
 * 1).封装文件目录   path:D:/workplace/eclipes/workspace/day_5-31/src/com/hbeu/file
 * 2).获取目录下所有的文件
 * 3).遍历判断是不是java文件
 * 		是不是文件,是不是java文件
 *
 *   File[] listFiles() 获取当前文件夹下所有的文件对象(File类的所有方法)
 *   String[] list()    获取当前文件夹下所有的文件名字 (String类的所有方法)demo.java
 *  
 * 文件过滤器: 
 *   FileFileter
 */
import java.io.File;

public class test {
	public static void main(String[] args) {
		// 1.封装文件目录 path:C:\Users\jkx\workspace\basic\src\cn\tedu\exce
		File f1 = new File("D:/workplace/eclipes/workspace/day_5-31/src/com/hbeu/file");
		File[] arr = f1.listFiles();
		for (int i = 0; i < arr.length; i++) {
			if (arr[i].isFile() && arr[i].getName().endsWith(".java")) {
				System.out.println(arr[i].getAbsolutePath());
			}
		}
	}
}

Method2:用Filel类方法(过滤器)过滤

package com.hbeu.file;

/*
 * 练习:查询包cn.tedu.file下.java结尾的文件,输出相关信息 
 * 1).封装文件目录   path:D:/workplace/eclipes/workspace/day_5-31/src/com/hbeu/file
 * 2).获取目录下所有的文件
 * 3).遍历判断是不是java文件
 * 		是不是文件,是不是java文件
 *
 *   File[] listFiles() 获取当前文件夹下所有的文件对象(File类的所有方法)
 *   String[] list()    获取当前文件夹下所有的文件名字 (String类的所有方法)demo.java
 *  
 * 文件过滤器: 
 *   FileFileter
 */
import java.io.File;
import java.io.FileFilter;

public class test {
	public static void main(String[] args) {
		File f1 = new File("D:/workplace/eclipes/workspace/day_5-31/src/com/hbeu/file");
		File[] arr = f1.listFiles(new FileFilter(){

			@Override
			public boolean accept(File arg0) {
				
				return arg0.isFile() && arg0.getName().endsWith(".java");
			}});
			
		
		for (int i = 0; i < arr.length; i++)
			System.out.println(arr[i].getAbsolutePath());
	}
}


Method3:用Filel类方法(自定义过滤器)过滤

package com.hbeu.file;

/*
 * 练习:查询包cn.tedu.file下.java结尾的文件,输出相关信息 
 * 1).封装文件目录   path:D:/workplace/eclipes/workspace/day_5-31/src/com/hbeu/file
 * 2).获取目录下所有的文件
 * 3).遍历判断是不是java文件
 * 		是不是文件,是不是java文件
 *
 *   File[] listFiles() 获取当前文件夹下所有的文件对象(File类的所有方法)
 *   String[] list()    获取当前文件夹下所有的文件名字 (String类的所有方法)demo.java
 *  
 * 文件过滤器: 
 *   FileFileter
 */
import java.io.File;
import java.io.FileFilter;

public class test {
	public static void main(String[] args) {
		File f1 = new File("D:/workplace/eclipes/workspace/day_5-31/src/com/hbeu/file");
		File[] arr = f1.listFiles(new OurFileFilter(".java"));
		for (int i = 0; i < arr.length; i++)
			System.out.println(arr[i].getAbsolutePath());
	}
}

class OurFileFilter implements FileFilter {
	private String msg;

	public OurFileFilter(String msg) {
		this.msg = msg;
	}

	@Override
	public boolean accept(File pathname) {
		return pathname.isFile() && pathname.getName().endsWith(msg);
	}
}


推荐第三种方法,真正做到了一次编写,多处使用!看看method2和method3的区别,就能明白文件过滤器的原理了!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值