[size=medium][b]File类 的使用[/b][/size]
import java.io.File;
import java.io.IOException;
/**
* File类
* (弥补了IO流的不足,不能对文件夹进行操作)
* 1)用来将文件或者文件夹 封装成对象
* 2)方便对文件或者文件夹进行操作
* 3)File对象可以作为参数传递给流的构造函数
* 4)了解File类中常用的方法.
*
* File 类的常见方法
* 1.创建
* boolean createNewFile():在指定的位置创建文件,如果该文件已经存在,则不创建,返回false
* 和 输出流不一样,输出流对象一建立就创建文件,而且会覆盖已存在的文件.
* //程序中需要用到临时文件
* File tf=createTempFile("临时文件","tmp");
* File tf=createTempFile("临时文件","tmp","c:\\system32\\");
*
* 2.删除
* boolean delete() : 删除失败返回 false
* void deleteOnExit(): 程序退出的时候 ,删除指定文件
*
* 3.判断
* boolean canExecute():如果文件存在返回true 表示可以操作 ,不存在返回false 表示不能执行
* boolean canRead(); 文件是否可读.
* boolean canWrite(): 文件是否可写
* int compartTo(): 按文件名比较
* boolean isAbsolute():是否是绝对路径
* boolean isHidden(); 是否是隐藏文件
*
* boolean exists():文件是否存在
* boolean isDirectory():是否是目录 (必须要判断是否存在)
* boolean isFile():是否是文件 (必须要判断是否存在)
*
* 4.获取信息
* String getName();获取文件名
* String getPath(): 获取路径
* String getParent(): 获取父目录 如果获取的的是相对路径返回的是null
* String getAbsolutePath(): 获取绝对路径
* File getAbsoluteFile(): 获取绝对路劲文件对象
* long lastModified(): 获取文件的组后修改时间
* long lenth(): 获取文件的长度.
* String getCanonicalPath();获取规范的文件路径
* boolean renameTo():修改名称
*
* File[] listRoots(): 获取当前系统可用 盘符
* String[] list():表示的目录中的文件和目录。(包含隐藏文件 和 目录)
*
*
*/
public class FileDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//consMethod();
//method_1();
//method_2();
//method_3();
//method_4();
//method_5();
method_6();
}
//获取当前盘符下的文件和目录 (包含隐藏文件 和 目录)
public static void method_6(){
File f=new File("cc\\");
String[] names=f.list(); //调用 list方法的file对象必须是封装了一个目录,该目录必须存在
for (String string : names) {
System.out.println(string);
}
}
//获取盘符
public static void method_5(){
File[] files=File.listRoots();
for (File file : files) {
System.out.println(file); //
System.out.println(file.length()); //返回当前盘符的大小
}
/*返回:
C:\
D:\
E:\
F:\
*/
}
//修改文件名
public static void method_4(){
File f1=new File("c:\\MyTools.java");
File f2=new File("c:\\Tools.java");
sop("rename:"+f1.renameTo(f2)); //将 MyTools.java --> Tools.java
File f3=new File("D:\\Tools.java");
sop("rename And like move:"+f1.renameTo(f3)); //发现C:\\MyTools.java 文件 移动到 D:\\Tools.java
sop("rename And like move:"+f3.renameTo(f1)); //发现 又将 D:\\Tools.java 移动到了C:\\MyTools.java 下面了
}
//获取文件信息
public static void method_3() throws IOException{
File f=new File("bb\\aa\\a.txt");
sop("path:"+f.getPath()); //获取封装的路径
sop("Canonicalpath:"+f.getCanonicalPath()); //获取封装的路径
sop("absPath:"+f.getAbsolutePath()); //获取文件的绝对路径
sop("parentPath:"+f.getParent()); //获取文件的绝对路径中的父母.如果获取的是相对路径,返回null
//如果相对路径中有上一层目录,那么该目录就是返回结果
sop("modified:"+f.lastModified()); //最后的修改时间
sop("length:"+f.length());
}
//文件判断
public static void method_2() throws IOException{
File f=new File("isFile.txt");
//记住判断文件兑现是否是文件或者目录的时候,必须要先判断文件对象封装的内容是否存在.
//通过exists 判断
sop("dir:"+f.isDirectory()); //false
sop("File:"+f.isFile()); //false
/*f.createNewFile();
sop("dir:"+f.isDirectory()); //false
sop("File:"+f.isFile()); //false
*/
//是否是绝对路径
sop("isAbsolute:"+f.isAbsolute());
sop("isHidden:"+f.isHidden());
//谁说上面的.txt 是文件 也可能是目录
f.mkdir();
sop("dir:"+f.isDirectory()); //false
sop("File:"+f.isFile()); //false
sop("isHidden:"+f.isHidden());
}
//File常用方法
public static void method_1() throws IOException{
//创建文件夹
File dir=new File("abc");
sop(dir.mkdir()); //true
//mkdir只能创建一级目录
File dir1=new File("bb\\kk");
sop(dir1.mkdir()); //false
//创建多级目录
File dirs=new File("cc\\kk\\jj\\mm");
sop(dirs.mkdirs()); //true
//创建
File f=new File("file.txt");
sop("create:"+f.createNewFile());
//是否可执行
sop("execute:"+f.canExecute());
//是否可以读
sop("read:"+f.canRead());
//是否可写
sop("write:"+f.canWrite());
//文件名比较
sop("compare:"+f.compareTo(new File("ab.txt")));
//文件是否存在
sop("exists:"+f.exists());
//删除
// sop("delete:"+f.delete());
}
//构造方法演示
public static void consMethod(){
//将a.txt封装成file对象,可以将已有的和 未出现的文件 或者文件夹 封装成 file对象
File f1=new File("a.txt"); //相对路径
//可以将 文件名 作为参数进传递进来
File f2=new File("c:\\abc","b.txt");
File d=new File("c:\\abc");
File f3=new File(d,"c.txt");
sop("f1:"+f1);
sop("f2:"+f2);
sop("f3:"+f3);
//发现这个里面的分隔符 跨平台
File f4=new File("c:\\a\\b\\c\\a.txt");
//下面的跨平台
f4=new File("c:"+File.separator+"a"+File.separator+"b"+File.separator+"c"+File.separator+"a.txt");
}
public static void sop(Object obj){
System.out.println(obj);
}
}