File类
基本方法:
(一). 创建
boolean createNewFile():在指定位置创建文件,如果该文件存在,则不创建,返回false
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹
(二). 删除
boolean delete():删除失败返回false,如果文件正在使用,则删除不了返回false
void deleteOnExit():在程序退出时删除指定文件,特用来处理一些临时文件,用完就在退出的时候删除掉。
(三). 判断
boolean exists():文件是否存在
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否隐藏
isAbsolute():判断路径是否是带有盘符的绝对路径。
注:判断文件对象是否是文件或者目的时,必须要先判断文件对象的内容是否存在,通过exists判断。
示例1:
import java.io.*;
class FileDemo1
{
public static void main(String args[])
{
}
public static void method5()
{
File f1 = new File("d:\\abcd\\file.txt");
File f2 = new File("d:\\text.java");
sop("rename"+f1.renameTo(f2));
}
public static void method4()
{
File f = new File("d:\\abcd\\file.txt");
sop("path:"+f.getPath());
sop("abspath:"+f.getAbsolutePath());
sop("parent"+f.getParent());
}
public static void method3()
{
File f = new File("d:\\abcd\\file.txt");
sop("dir:"+f.isDirectory());
sop("file:"+f.isFile());
sop(f.isAbsolute());
}
public static void method2() throws IOException
{
File f = new File("file.txt");
sop("exists:"+f.exists());
sop("Execute:"+f.canExecute());
File dir = new File("abc\\kk\\ssss\\dddd\\snjd");
sop("mkdir:"+dir.mkdirs());
}
public static void method1() throws IOException
{
File f = new File("file.txt");
f.deleteOnExit();
sop("create:"+f.createNewFile());
sop("delete:"+f.delete());
}
public static void consMethod()
{
File f1 = new File("a.txt");
File f2 = new File("c:\\abc","b.txt");
File dir = new File("c:\\abc");
File f3 = new File(dir,"c.txt");
sop("f1"+f1);
sop("f2"+f2);
sop("f3"+f3);
File file4 = new File("c:"+File.separator+"abc"+File.separator+"d.txt");
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
(四). 获取信息
String getName():获得文件名称,相对路径
String getPath():获得文件路径,相对路径
String getParent():获得文件的上级目录,没有上级目录则返回null
String getAbsolutePath():获得文件的绝对路径
Long lastModified():返回文件最后修改时间
Long length():返回文件大小
(五). 列出内容
String[] list():列出指定文件下的文件的文件路径
String[] list(过滤器[需要覆写public boolean accept(File dir,String name)方法]):
File[] listFiles():列出指定文件下的文件对象。
File[] listFiles(过滤器):
示例2:
import java.io.*;
class FileDemo2
{
public static void main(String args[])
{
}
public static void listFilesDemo
{
File dir = new File("c:\\");
File files = dir.listFiles();
for(File f:files)
{
System.out.println(f.getName()+"::"+f.length());
}
}
public static void listDemo2()
{
File f = new File("c:\\abcs\\day18");
String[] arr = f.list(new FilenameFilter()
{
public boolean accept(File dir,String name)//此处的dir为指定文件的文件名,name为dir目录中所有的文件名。
{
System.out.println("dir:"+dir+".......name---"+name);
return name.endsWith(".java");
}
});
for(String name:arr)
{
System.out.println(name);
}
}
public static void listDemo()
{
File f = new File("c:\\abc.txt");
String[] names = f.list();//调用list方法的file对象必须是个目录,该目录必须存在。
for(String name:names)
{
System.out.println(name);
}
}
public static void listRootDemo()
{
File[] files = File.listRoots();
for(File f:files)
{
System.out.println(f);
System.out.println(f.length());//返回值为0.
}
}
}
练习1:列出给定目录下的所有文件的名称,利用递归调用
练习2:删除指定目录下的含有内容的文件夹。
import java.io.*;
class FileDemo3
{
public static void main(String args[])
{
}
public static void showDir(File dir)
{
System.out.println(dir);
File[] files = dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
{
showDir(files[x])
}else
{
System.out.println(files[x]);
}
}
}
public static void deleteDir(File dir)
{
File[] files = dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
{
deleteDir(files[x])
}else
{
files[x].delete();
}
}
dir.delete();
}
}
练习3:将一个指定目录下的java文件,写入到一个文件中,创建java文件列表。
import java.io.*;
class FileDemo4
{
public static void main(String args[])
{
File dir = new File("c:\\abd\\dd")
ArrayList<File> list = new ArrayList<File>();
fileToList(dir,list);
File file = new File("d:\\a.txt");
writeToFile(list,file);
}
public static void fileToList(File dir,ArrayList<File> list) throws Exception
{
File[] files = dir.listFiles();
for(File file:files)
{
if(file.isDirectory())
{
fileToList(file,list);
}else
{
if(file.getName().endsWith(".java"))
{
list.add(file);
}
}
}
}
public static void writeToFile(List<File> list,String javaListFile) throws Exception
{
BufferedWriter bfw = null;
try
{
bfw = new BufferedWriter(new FileWriter(javaListFile));
for(File f:list)
{
String path = f.getAbsolutePath();
bfw.write(path);
bfw.newLine();
bfw.flush();
}
}catch(IOException e)
{
throw e;
}finally
{
try
{
if(bfw!=null)
{
bfw.close();
}
}catch(IOException e1)
{
throw e1;
}
}
}
}
小插曲:递归调用的讲解
public static void sum(int num)//递归求得从1-num的和为多少。
{
if(num==1)
{
return 1;
}else
{
return num+sum(num-1);
}
}
public static void toBin(int num)//求得一个数的二进制。
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
}
}