File类
作用:
1.用来将文件或者文件夹封装成对象。
2.方便对文件与文件夹的属性进行操作。
3.File对象可以作为参数传递给流的构造函数。
IO流的流对象只能操作设备上的数据。
文件属性的操作和文件夹的创建,删除由File类完成。
File类
字段摘要 |
||
static String |
pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 |
|
static char |
pathSeparatorChar 与系统有关的路径分隔符。 |
|
static String |
separator 与系统有关的路径分隔符。此字段被初始为包含系统属性 path.separator 值的第一个字符。此字符用于分隔以路径列表 形式给定的文件序列中的文件名。在 UNIX 系统上,此字段为 ‘:‘;在 Microsoft Windows 系统上,它为 ‘; |
|
static char |
separatorChar 与系统有关的默认名称分隔符。 |
|
构造方法摘要 |
||
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
||
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
||
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
||
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
方法摘要 |
|
boolean |
canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。 |
boolean |
canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。 |
boolean |
canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。 |
int |
compareTo(File pathname) 按字母顺序比较两个抽象路径名。 |
boolean |
createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
static File |
createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 |
static File |
createTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 |
boolean |
delete() 删除此抽象路径名表示的文件或目录。 |
void |
deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 |
boolean |
equals(Object obj) 测试此抽象路径名与给定对象是否相等。 |
boolean |
exists() 测试此抽象路径名表示的文件或目录是否存在。 |
File |
getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。 |
String |
getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 |
File |
getCanonicalFile() 返回此抽象路径名的规范形式。 |
String |
getCanonicalPath() 返回此抽象路径名的规范路径名字符串。 |
long |
getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。 |
String |
getName() 返回由此抽象路径名表示的文件或目录的名称。 |
String |
getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 |
File |
getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 |
String |
getPath() 将此抽象路径名转换为一个路径名字符串。 |
long |
getTotalSpace() 返回此抽象路径名指定的分区大小。 |
long |
getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。 |
int |
hashCode() 计算此抽象路径名的哈希码。 |
boolean |
isAbsolute() 测试此抽象路径名是否为绝对路径名。 |
boolean |
isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 |
boolean |
isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 |
boolean |
isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。 |
long |
lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。 |
long |
length() 返回由此抽象路径名表示的文件的长度。 |
String[] |
list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 |
String[] |
list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
File[] |
listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 |
File[] |
listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
File[] |
listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
static File[] |
listRoots() 列出可用的文件系统根。 |
boolean |
mkdir() 创建此抽象路径名指定的目录。 |
boolean |
mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 |
boolean |
renameTo(File dest) 重新命名此抽象路径名表示的文件。 |
boolean |
setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。 |
boolean |
setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。 |
boolean |
setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。 |
boolean |
setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。 |
boolean |
setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。 |
boolean |
setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 |
boolean |
setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。 |
boolean |
setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。 |
String |
toString() 返回此抽象路径名的路径名字符串。 |
URI |
toURI() 构造一个表示此抽象路径名的 file: URI。 |
URL |
toURL() 已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。 |
/**
* File的constructor演示
*/
package cn.test.filedemo;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//File类构造函数演示
constructorDemo();
}
private static void constructorDemo() {
String pathname ="a.txt";
//讲一个已存在的,或者不存在的文件或者目录封装成对象
File file1 = new File(pathname );
File file2 = new File("c:\\","a.txt");
File file3 = new File("c:\\");
File file4 = new File(file3,"a.txt");
//文件路径分隔符的使用
File f5 = new File("c:"+File.separator+"abc"+File.separator+"a.txt");
}
}
File的方法演示
/**
* File的方法演示
* 1.获取
*
1.1获取文件名称
getName()
*
1.2获取文件路径
getAbsolutePath()与getPath()
*
1.3获取文件大小
length()
*
1.4获取文件的修改时间
lastModified()
* 2.创建与删除
*
创建文件
* 3.判断
*
要删除文件,需要先判断文件是否存在,判断文件是否可以读写等。
* 4.文件重命名
* 5.文件系统根目录 可以知道可用的磁盘标示和可用空间
* 6.获取目录内容
*
*/
package cn.test.filedemo;
import java.io.File;
import java.util.Date;
public class FileMethodDemo {
public static void main(String[] args) throws Exception {
//getDemo();
//mkdir();
//judge();
//rename();
//listRoots();
list();
}
/*获取到的是当前目录下的所有文件夹和文件,包含隐藏文件
调用list方法的File对象中封装的必须是目录
否则会发生空指针异常 java.lang.NullPointerException
如果是隐藏目录,也会出现空指针异常
如果目录存在但是没有内容,会返回一个长度为0的数组
*/
private static void list() {
// TODO Auto-generated method stub
File file = new File("d:\\");
String []names = file.list();
for (String name : names) {
System.out.println(name);
}
}
//获取文件系统根目录
private static void listRoots() {
// TODO Auto-generated method stub
//可以获取到电脑上的可操作磁盘标示
File []files = File.listRoots();
for (File file : files) {
/*
* C:\
D:\
E:\
F:\
*
*/
System.out.println(file);
}
File file = new File("c:\\");
System.out.println(file.getUsableSpace());
//获取某个磁盘可用空间
System.out.println(file.getFreeSpace());
System.out.println(file.getTotalSpace());
}
//文件重命名
private static void rename() {
// TODO Auto-generated method stub
File file = new File("aa.txt");
File file2 = new File("cc.txt");
boolean rename = file.renameTo(file2);
}
//文件判断
private static void judge() {
// TODO Auto-generated method stub
//最好判断文件是否存在,在对文件进行操作
File f = new File("aa.txt");
//判断文件是否可读
boolean read = f.canRead();
//判断文件是否可以写
boolean write = f.canWrite();
//判断文件是否可执行
boolean execute = f.canExecute();
//判断是否是文件
boolean file = f.isFile();
//判断文件是否是隐藏文件
boolean hidden = f.isHidden();
//判断是否是目录
boolean directory = f.isDirectory();
//是否是绝对路径
boolean abs = f.isAbsolute();
}
//创建文件和删除
private static void mkdir() throws Exception {
// TODO Auto-generated method stub
File file = new File("bb.txt");
//创建新文件,如果文件不存在,创建文件,如果文件存在, 则不创建文件。
boolean b = file.createNewFile();
//删除文件,删除成功返回true否则返回false
//window的的删除是从里向外删除的,如果文件正在被流使用,则无法删除该文件
boolean delete = file.delete();
//凡是以can或者is开头的方法,都是作为判断的方法
//创建目录
boolean dir = file.mkdir();
}
//文件属性的获取
private static void getDemo() {
File file = new File("e:\\java\\aa.txt");
//获取文件名
String name = file.getName();
System.out.println(name);
//获取文件所在的绝对路径
String abspath = file.getAbsolutePath();
System.out.println(abspath);
//获取文件所在相对路径
String path = file.getPath();
System.out.println(path);
//获取文件大小
long len = file.length();
//获取文件最后修改时间
long time = file.lastModified();
Date date = new Date(time);
}
}
//获取指定文件目录中某一类型的文件
package cn.test.filedemo;
import java.io.File;
import java.io.FilenameFilter;
/**
* 获取指定文件目录下指定文件类型的文件
*
1.实现FilenameFilter接口
*
2.重写accept方法
accept方法会被调用很多次
*
*/
public class FilterByName implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".java");
}
public static void main(String[] args) {
File dir = new File("c:\\");
String[] names = dir.list(new FilterByName());
for (String name : names) {
System.out.println(name);
}
}
}
Flie文件的过滤器很重要