Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
File对象代表磁盘中实际存在的文件和目录。
File类常见方法:
1,创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs():创建多级文件夹。
2,删除。
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
void deleteOnExit();在程序退出时删除指定文件。
3,判断。
boolean exists() :文件是否存在.
isFile(): 判断是否是文件
isDirectory(); 判断是否是目录
isHidden(); 判断是否是一个隐藏文件。
isAbsolute(); 判断路径是否是绝对路径
4,获取信息。
getName(): 获取名字
getPath(): 获取路径
getParent(): 获取父路径
getAbsolutePath() 获取绝对路径
long lastModified() 文件最后一次修改的时间
long length() 文件的大小
这里有个实例,要求是打印出一个目录下的文件。
一个目录下,不一定全是文件,也许还有二级目录,这里就要用到递归算啦。 如果你是目录,我就继续往里查询文件,并打印出来。
直接看代码吧。
import java.io.*;
public class FileDemo
{
public static void main(String[] args)
{
//调用函数 因为传递过去的首目录,所以级别为0
showDir(new File("e:\\java"),0);
}
/**
*目录级分割符
*/
public static String getLevel(int level)
{
StringBuilder sb = new StringBuilder();
//只有挨着文件的有--
sb.append("|--");
for(int x=0; x<level; x++)
{
//每次都插在最前面
sb.insert(0,"| ");
}
//返回分隔符
return sb.toString();
}
/**
*显示所有目录和文件
*/
public static void showDir(File dir,int level)
{
//打印目录
System.out.println(getLevel(level)+dir.getName());
//目录级别加1
level++;
//获得当前目录下的所有文件和目录
File[] files = dir.listFiles();
for(int x = 0; x < files.length; x++)
{
//如果是目录就递归,
if(files[x].isDirectory())
showDir(files[x],level);
else
//如果是文件就打印出来
System.out.println(getLevel(level)+files[x].getName());
}
}
}
删除目录。删除不是空目录的话,我们应该把文件删除,在把目录删除。
import java.io.*;
class RemoverDir
{
public static void main(String[] args)
{
removerDir(new File("f:/qing"));
}
public static void removerDir(File dir)
{
//获得当前目录下的所有文件和目录
File[] files = dir.listFiles();
//遍历所有file
for(int x=0; x < files.length; x++)
{
//如果是目录,就递归
if(files[x].isDirectory())
removerDir(files[x]);
else
//如果是文件,就删除
files[x].delete();
}
//删除目录
dir.delete();
}
}
最后写一个,把一个文件下的所有已.java为后缀的文件保存到一个文件中,方便自己查询。
import java.io.*;
import java.util.*;
class JavaFileList
{
public static void main(String[] args) throws IOException
{
File dir = new File("e:\\java");
List<File> list = new ArrayList<File>();
fileToList(dir,list);
File file = new File(dir,"java.txt");
writeToFile(list,file);
}
public static void fileToList(File dir,List<File> list)
{
//获得当前目录下的所有文件和目录
File[] files = dir.listFiles();
//遍历所有file
for(File file : files)
{
//如果是目录,就递归
if(file.isDirectory())
fileToList(file,list);
else
{
//如果是文件,且是已.java为后缀,就添加到集合中
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
/**
*将集合中的数据写入到输出流中
*/
public static void writeToFile(List<File> list, File javaListFile)throws IOException
{
BufferedWriter bufw = null;
try
{
bufw = new BufferedWriter(new FileWriter(javaListFile));
for(File f : list)
{
//获取绝对路径
String path = f.getAbsolutePath();
//写入数据
bufw.write(path);
//换行
bufw.newLine();
//刷新缓冲区
bufw.flush();
}
}
catch (IOException e)
{
throw e;
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw e;
}
}
}
}