1.关于File类
File类是java中用于封装路径和文件的类,是文件和目录路径名的抽象表现形式。之前的字符流和字节流能将文件内容进行复制等操作,但是不能操作文件夹,引出File类来可以很方便的操作文件和文件夹。
2.File类构造方法概述
要了解File类,先了解其常用的构造方法:
方法一:
File file=new File("a.txt");
将a.txt封装成File对象。可以将已有的和未出现的文件或者文件夹封装成对象。
注意:该File类不一定是创建的文件也有可能是文件夹
方法二:
File file2=new File("c:\\abc","b.txt");
将文件所在目录路径和文件一起传入,指定文件路径。该方法将路径和文件确定,关联性强。
方法三:
File d=new File("c:\\abc");
File f3=new File(d,"c.txt");
将文件目录路径封装成对象。再创建文件对象。降低了文件于父目录的关联性。
补充知识:
File.separator表示目录分隔符,可以跨平台使用。相当于路径中的“\”(双斜杠\\在windows中表示表示转义后的分隔符,但是在linux系统中就不是)。在我们编写程序过程中,常使用“\\”分隔符。
3.File类常用方法
boolean createNewFile();//在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象一建立就创建文件。而且文件已经存在,会覆盖。boolean mkdir();//创建文件夹,只能创建一级文件夹
boolean delete();//删除文件或目录。文件存在,返回true;文件不存在或者正在被执行,返回false, void deleteOnExit();//在程序退出时删除指定文件
boolean exists();//文件是否存在,boolean isFile();//是否是文件,boolean isDirectory();//是否是文件夹,boolean isAbsolute();//文件是否是绝对路径 String getName();//获取文件名,String getPath();String getAbsolutePath();//获取文件的绝对路径
4.File类的应用示例
示例一:
/*
需求:将一个目录下所有的java文件路径复制到一个文件内
思路:
1.将目的路径中的java文件取出,将File对象存入List
2.判断是否是Java文件,看文件名结尾是否是.java
3.创建流对象用于将文件名存入到指定文件。
*/
import java.io.*;
import java.util.*;
class FileTest1
{
public static void main(String[] args)throws IOException
{
File ff=new File("F:\\Java13");//创建File类,关联该路径文件夹
List<File> file=new ArrayList<File>();//创建List用于存放文件夹内的java文件封装的File对象
FileJih(ff,file);//调用方法,将java文件存入list中
toWrite(file,"javalistname.txt");
}
public static void FileJih(File dir,List<File> al)
{
File[] fils=dir.listFiles();
for(File f:fils)
{
if(f.isDirectory())
FileJih(f,al);//递归调用,找到该目录下所有java文件
else
{
if((f.getName()).endsWith(".java"))//判断是否为java结尾的文件
al.add(f);//将java文件的File加入到list中
}
}
}
public static void toWrite(List<File> t,String name)throws IOException
{
BufferedWriter bw=new BufferedWriter(new FileWriter(name));
for(File f:t)
{
bw.write(f.getAbsolutePath());//将java文件名存入文件内
bw.newLine();//换行
bw.flush();//刷新要注意
}
bw.close();
}
}
运行结果:
实现了功能,将java文件名存入到指定的txt文件,但是没有分级显示,示例二可以实现该功能
示例二:
import java.io.*;
class FileTest2
{
public static void main(String[] args)
{
File div=new File("F:\\xuexi");
showFile(div,1);
}
public static String getlevel(int level)
{
StringBuilder sb=new StringBuilder();
for(int x=0;x<level;x++)
{
sb.append("|--");
}
return sb.toString();
}
public static void showFile(File dir,int level)
{
System.out.println(getlevel(level)+dir);
level++;
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
showFile(files[x],level);
else
System.out.println(getlevel(level)+files[x]);
}
}
}
总结: