------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
File类时用来描述文件的一个类。
File类的构造方法:
public static void consMethod()
{
//将a.txt封装成file对象。可以将已有的和未出现的文件或者文件夹封装成对象。
File f1=new File("a.txt");
//
File f2=new File("E:\\java\\exam","b.txt");
File d=new File("E:\\java\\exam");
File f3=new File(d,"c.txt");
System.out.println("f1:"+f1);
System.out.println("f2:"+f2);
System.out.println("f3:"+f3);
File f4=new File("c:" +File.separator+"abc" +File.separator+"zzz" +File.separator+"a.txt");
}
File类的常见方法:
1.创建。boolean createNewFile(); 在指定位置创建文件,如果该文件已经存在,则不创建返回false。
和输出流不一样,输出流对象一建立就会创建文件。且文件已经存在会覆盖。
boolean mkdir(); 创建文件夹。
boolean mkdirs(); 创建多级文件夹。
public static void method()
{
File f=new File("file.txt");
System.out.println("exists:"+f.exists());
// System.out.println("Execute:"+f.canExecute());
//创建文件夹
File dir =new File("abc\\kk");
System.out.println("mkdir:"+dir.mkdir());
}
2.删除。
boolean delete(); 删除失败返回false。
void deleteOnExit(); 在程序退出时删除指定文件。
public static void method() throws IOException
{
File f=new File("file.txt");
f.deleteOnExit();
System.out.println("delete:"+f.delete());
}
3.判断。
boolean exists(); 文件是否存在。
isFile(); 是否是文件
isDirectory(); 是否是目录
isHidden(); 是否隐藏
isAbsolute(); 是否是绝对路径
public static void method() throws IOException
{
File f=new File("E:\\java\\exam\\file.txt");
//在判断文件对象是否是文件对象或者目录事,必须先判断该文件对象封装的内容是否存在。
//通过exists判断。
System.out.println("dir:"+f.isDirectory());
System.out.println("file:"+f.isFile());
System.out.println("absolute:"+f.isAbsolute());
}
4.获取信息。
getName();
getPath();
getParent();
getAbolutePath();
long lastMoidfied();
long length();
public static void method()
{
File f=new File("file.txt");
System.out.println("path:"+f.getPath());
System.out.println("abspath:"+f.getAbsolutePath());
System.out.println("parent:"+f.getParent());//该方法返回的是绝对路径中的父目录
//如果获取的是相对路径,返回null
//如果相对路径中有上一层目录那么该目录就是返回结果。
}
5.移动文件。
renameTo();
public static void method()
{
File f1=new File("E:\\java\\exam\\123.jpg");
File f2=new File("E:\\java\\exam\\111.jpg");
System.out.println("rename:"+f2.renameTo(f1));//可移动,类似于复制
}
因为目录中海油目录,只要视同同一个列出目录功能的函数即可。
在列出过程中出现的还是目录的话,还可以再次调用本功能。也就是函数自身调用自身。
这种表现形式,或者编程手法,成为递归。
递归要注意:
1.限定条件
2.要注意递归的次数。尽量避免内存溢出。
class Demo
{
public static void main(String[] args)
{
File dir=new File("E:\\java\\exam");
showDir(dir,0);
}
public static void showDir(File dir,int level)
{
System.out.println(getLevel(level)+dir);
level++;
File[] files=dir.listFiles();
for(File f:files)
{
if(f.isDirectory())
{
showDir(f,level);
}
else
System.out.println(getLevel(level)+f);
}
}
public static String getLevel(int level)
{
StringBuilder sb=new StringBuilder();
sb.append("|--");
for(int x=0;x<level;x++)
{
// sb.append("|--");
sb.append("--");
// sb.insert(0,"| ");
}
return sb.toString();
}
}