File类
作用:
1.用来将文件或者文件夹封装成对象。
2.方便对文件与文件夹的属性进行操作。
3.File对象可以作为参数传递给流的构造函数。
IO流的流对象只能操作设备上的数据。
文件属性的操作和文件夹的创建,删除由File类完成。
File类
字段摘要 |
||
static String |
pathSeparator |
|
static char |
pathSeparatorChar |
|
static String |
separator
|
|
static char |
separatorChar |
|
构造方法摘要 |
||
File(File parent, String child) |
|
|
File(String pathname) |
|
|
File(String parent, String child) |
|
|
File(URI uri) |
|
方法摘要 |
|
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() |
File |
getParentFile() |
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() |
URL |
toURL() |
/**
* 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文件的过滤器很重要