【创建File对象】
1、File(String pathname)
java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。
File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问。
构造方法:
1)File(String pathname)
2)通过将给定路径名字符串转换成抽象路径名来创建一个新File实例
3)抽象路径应尽量使用相对路径,并且目录的层级分隔符不要直接写"/"或"\",应使用File.separator这个常量表示,以避免不同系统带来的差异。
以下代码在demo目录(文件夹)下创建了HelloWorld.txt。
public void testFile(){
File file=new File("demo"+File.separator+"HelloWorld.txt");
}
2、File(File parent,String child)
File还提供另一个构造方法:
1)File(File parent,String child)
1)根据parent抽象路径名和child路径名字符串创建一个新File实例
public void testFile2(){
File paren=new File("demo");
File file=new File(parent,"HelloWorld.txt");
}
3、isFile()方法
File的isFile方法用于判断当前File对象所表示的是否为一个文件。
boolean isFile()
返回值:当前File对象所表示是一个文件时返回true。
public void testIsFile(){
File file=new File("demo"+File.separator+"HelloWorld.txt");
}
【File表示文件信息】
1、length()方法
File的length方法用于返回由此抽象路径名表示的文件的长度(占用的字节量)
long length()
返回值:当前File对象所表示的文件所占用的字节量。
public void testLength(){
File file=new File("demo"+File.separator+"HelloWorld.txt");
}
2、exists()方法
File的exists方法用于测试此抽象路径名表示的文件或目录是否存在。
boolean exists()
返回值:若该File表示的文件或目录存在则返回true,否则返回false。
3、createNewFile方法
File的createNewFile方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,原指定创建由此抽象路径名指定的一个新的空文件。
boolean creatNewFile()
返回值:如果指定的文件不存在并成功地创建,则返回true;如果指定的文件已经存在,则返回false。
public void testCreateNewFile() throws IOException{
File file=new File("demo"+File.separator+"Hello.txt");
//若不存在,就创建该文件
if(!file.exists()){
file.createNewFile();
}
}
4、delete()方法
File的delete方法用于删除此抽象路径名表示的文件或目录。
boolean delete()
返回值:当且仅当成功删除文件或目录时,返回true;否则返回false。
需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。
public void testDeleteFile{
File file=new File("demo"+File.separator+"HelloWorld.txt");
file.delete();
}
5、isDirectory()方法
File的isDirectory方法用于判断当前File表示的是否为一个目录。
boolean isDirectory()
返回值:当File对象表示的是一个目录时返回true;否则返回false。
public void testIsDirectory(){
File file=new File("demo");
}
【File表示目录信息】
1、mkdir()方法
File的mkdir方法用于创建此抽象路径名指定的目录。
boolean mkdir()
返回值:当且仅当已创建目录时,返回true;否则返回false。
public void testMkDir(){
File dir=new File("myDir");
dir.mkdir();
}
2、mkdirs()方法
File的mkdirs方法用于创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必须的父目录。
boolean mkdirs()
返回值:当且仅当已创建目录以及所有必需的父目录时,返回true;否则返回false。
public void testMkDirs(){
File dir=new File("a"+File.separator+"b"+File.separator+"c");
dir.mkdirs();
}
3、delete()方法
File的delete方法用于删除此抽象路径名表示的文件或目录。
boolean delete()
返回值:当且仅当成功删除文件或目录时,返回true;否则返回false。
需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。
3、listFiles()方法
File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此路径名表示的目录中的子项(文件或目录)。
File[] listFiles()
返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生I/O错误,则返回null。
public void testListFiles(){
File dir=new File(".");
File[] subs=dir.listFiles();
for(File sub:subs){
}
}
4、FileFilter接口
FileFilter用于抽象路径名的过滤器。
此接口的实例可传递给File类的listFile(FileFilter)方法。用于返回满足该过滤器要求的子项。
File[] listFiles(FileFilter filter)
举例代码:
File[] list=dir.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname){
return pathname.getName().startsWith(".");
}
});
public void testFileFilter(){
File dir=new File(".");
File[] subs=dir.listFiles(new FileFilter(){
public boolean accept(File file){
return file.getName().endsWith(".txt");
}
});
for(File sub:subs){
}
}
【演示】
一、以下代码在当前目录(即src所在的目录,下同)下创建了demo.txt。
public class FileDemo1{
public static void main(String[] args){
File file=new File("."+File.separator+"demo.txt");//若操作系统是windows则可以用"\"代替"File.separator",若操作系统是linux则可以用"/"代替"File.separator",写"File.separator"则这两种操作系统都可以用这个程序,所以建议写"File.separator"。
//获取文件名字
String name=file.getName();
//获取文件大小
long length=file.length();
//可写
boolean canWrite=file.canWrite();
//可读
boolean canRead=file.canRead();
//隐藏
boolean isHidden=file.isHidden();
//最后修改时间
long time=file.lastModified();
Date date=new Date();
date.setTime(time);//若不写这句代码,则上一句代码因改为Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年M月d日,HH:mm:ss");
}
}
二、以下代码在当前目录下创建了一个名为test.txt的文件
public class FileDemo2{
File file=new File("."+File.separator+"test.txt");
if(!file.exists()){
file.createNewFile();
}else{
}
}
三、以下代码删除了当前目录中的test.txt文件
public class FileDemo3{
public static void main(String[] args){
File file=new File("test.txt");//默认当前目录
if(file.exists()){
file.delete();
}else{
}
}
}
四、以下代码在当前目录下创建了一个名为"demo"的目录。
public class FileDemo4{
public static void main(String[] args){
File dir=new File("demo");
if(!dir.exists()){
dir.mkdir();
}else{
}
}
}
五、以下代码在当前目录下创建了a/b/c/d/e/f的多级目录。
public class FileDemo5{
public static void main(String[] args){
File dir=new File("."+File.separator+"a"+File.separator+"b"+File.separator+"c"+File.separator+"d"+File.separator+"e"+File.separator+"f");
if(!dir.exists()){
dir.mkdirs();
}else{
}
}
}
六、以下代码删除了当前目录中的"demo"目录。
public class FileDemo6{
public static void main(String[] args){
File dir=new File("demo");
if(dir.exists()){
dir.delete();//在删除时需要保证此为空目录才可以成功删除。
}else{
}
}
}
七、以下代码访问了当前目录中的所有子项。
public class FileDemo7{
public static void main(String[] args){
File dir=new File(".");
if(dir.isDirectory()){//判断当前File对象表示的是否为一个目录,dir.isFile()判断当前File对象表示的是否为一个文件
File[] subs=dir.listFiles();
for(File sub:subs){
}
}
}
}
八、将给定的File对象表示的文件(多个文件)或目录(多级目录)删除
publc class Test{
public static void main(String[] args){
File dir=new File("a");
delete(dir);
}
public static void delete(File flie){
if(file.isDirectory()){
File[] subs=file.listFiles();
for(File sub:subs){
delete(sub);//方法内部掉自己的方法叫递归,要注意避免死循环
}
}
file.delete();
}
}
九、以下代码获取当前目录中的所有文件,而不获取当前目录中的目录
public class FileDemo8{
public static void main(String[] args){
File dir=new File(".");
//FileFilter是过滤器
File[] subs=dir.listFiles(new FileFilte(){
public boolean accept(File file){
return file.isFile();
}
});
for(File sub:subs){
}
}
}
领取专属 10元无门槛券
私享最新 技术干货