通过I/O流可以对文件的内容进行读写和操作,但对文件本身进行的一些常规操作是无法通过I/O流来实现的,例如创建一个文件、删除或者重命名某个文件、判断硬盘上某个文件是否存在等。针对文件的这类操作,JDK中提供了一个File类,该类封装了一个路径,并提供了一系列的方法用于操作该路径所指向的文件。
一、File类的常用方法
File类用于封装一个路径,这个路径可以是从系统盘符开始的绝对路径,如D:\file.txt,也可以是相对于当前目录而言的相相对路径,如sre\Hello. java. File类内部封装的路行可以指可以指向一个文件,也可以指向一个目录,在File 类中提供了针对这些文件或目录的一些常规操作。
File类的常用构造方法
方法声明 | 功能描述 |
---|---|
Fiel(String pathname) | 通过指定的-个字符 串类型的文件路径来创建一个新的File 对象 |
File(String parent,String child) | 根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包括文件名称)创建一个File对象 |
File(File parent,String child) | 根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个File对象 |
通常来讲,如果程序只处理一个目录或文件,并且知道该目录或文件的路径,使用第一个构造方法较方便。如果程序处理的是一个公共目录中的若干子目录或文件,那么使用第二个或者第三个构造方法会更方便。
File类中提供了一系列方法,用于操作其内部封装的路径指向的文件或者目录,例如判断文件/目录是否存在、创建和删除文件/目录等。
File类的常用方法
方法声明 | 功能描述 |
---|---|
boolean exists( ) | 判断File对象对应的文件或目录是否存在,若存在则返回ture, 否则派回false |
boolean delete( ) | 删除File对象对应的文件或目录,若成功删除则返回true,否则返回false |
boolean createNewFile() | 当File对象对应的文件不存在时,该方法将新建一个此File对象所指定的新文件,若创建成功则返回true,否则返回false |
String getName() | 返回File对象表示的文件或文件夹的名称 |
String getPath() | 返回File对象对应的路径 |
String getAbsolutePath() | 返回File对象对应的绝对路径(在Unix/Linux等系统上,如果路径是以正斜线/开始,则这个路径是绝对路径;在Windows等系统上,如果路径是从盘符开始,则这个路径是绝对路径) |
String getParent() | 返回File对象对应目录的父目录(即返回的目录不包含最后一级子目录) |
boolean canRead() | 判断File对象对应的文件或目录是否可读,若可读则返回true,反之返回false |
boolean canWrite() | 判断File对象对应的文件或目录是否可写,若可写则返回true,反之返回false |
boolean isFile() | 判断File对象对应的是否是文件(不是目录),若是文件则返回true,反之返回false |
boolean isDirectory() | 判断File对象对应的是否是目录(不是文件),若是目录则返回true,反之返回false |
boolean isAbsolute() | 判断File对象对应的文件或目录是否是绝对路径 |
long lastModified() | 返回1970年1月1日0时0分0秒到文件最后修改时间的毫秒值 |
long length() | 返回文件内容的长度 |
String[] list() | 列出指定目录的全部内容,只是列出名称 |
String[] list( FilenameFilterfilter) | 接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件 |
File[] listFiles() | 返回一个包含了File 对象所有子文件和子目录的File 数组 |
二、File类中方法演示
获取文件属性
package day06;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* java.io.File
* File的每一个实例可以表示文件系统中的一个文件
* 或目录
* 使用File可以:
* 1.访问文件或目录的属性(如:大小、名字,修改时间等 )
* 2.操作文件或目录(创建,删除文件和目录)
* 3.访问目录中的所有内容
* 但是不可以访问文件数据
* @author
*
*/
public class FileDemo1 {
public static void main(String[] args) {
File file = new File("."+File.separator+"Demo.txt");
//获取名字
String name = file.getName();
System.out.println("name:"+name);
//大小(占用的字节量)
long length = file.length();
System.out.println("大小:"+length+"字节");
//是否为文件
boolean isFile = file.isFile();
System.out.println("是文件:"+isFile);
//是否为目录