黑马程序员技术交流社区
标题:
IO part5
[打印本页]
作者:
fmi110
时间:
2015-8-10 11:50
标题:
IO part5
IO
File 类
该类的出现是对文件系统中的文件以及文件夹进行对象的封装。
以对象的思想来操作文件以及文件夹。
1、构造函数
File(String fileName);
File(String parent,String child);
File(File parent,String child);
2、特殊字段:可跨平台使用
static String pathSeparator
与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar
与系统有关的路径分隔符。
static String separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static char separatorChar
与系统有关的默认名称分隔符。
3、常见方法:
1 创建:
boolean creatNewFile() throws IOException
如果文件已存在,则不创建
boolean mkdir(); 建文件夹
boolean mkdirs(); 建立多级目录
2 删除:
boolean delete(); 删除文件或文件夹
注意:对于文件夹只能删除不带内容的空文件夹,
对于非空文件夹,只能从里往外删除(递归删除)
对于不存在或已删除的文件 返回 false
void deleteOnExit(); 删除动火证交给系统完成。无论是否发生异常,系统在退出时
执行删除动作。
3 判断:
boolean canExexute();
boolean canWrite();
boolean canRead();
boolean exists(); 判断文件是否存在
boolean isFile(); 判断 File 对象封装的是否是文件
boolean isDirectiry();判断 File 对象封装的是否目录(文件夹)
boolean isHidden(); 判断文件或者文件夹是否隐藏。
注意:在获取硬盘文件或文件夹时,对于系统目录中的文件,java是无法访问的,
所以在遍历文件夹时,应该避开隐藏文件
4 获取
getName(); 获取文件或文件夹的名字
getPath();
getAbsolutePath(); 获取绝对路径
getParent(); 获取File对象封装文件或文件夹的父目录
注意:如果封装的是相对路径,则返回null
long length(); 获取文件大小
long lastModified(); 获取最后一次修改的时间
static File[] listRoots();获取系统中的有效盘符
String[] list(); 获取指定目录下当前的文件或文件夹名称
String[] list(FilenameFilter filter);
可以根据指定的过滤器,过滤文件及文件夹名称
File listFiles();返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
File listFiles(FilenameFilter filter);
返回过滤后的文件对象
5 重命名:
renameTo(File);移动并重命名文件
删除文件夹,或者遍历一个目录,经常需要用到递归功能
使用 递归时需注意的问题:
1 一定要限定条件,否则内存溢出,或者只递不归
2 使用递归时,需要注意递归次数不要过多,否则可能导致内存溢出
******************************************************************************************************
练习:列出指定目录下的文件以及文件夹
import java.io.*;
import java.util.*;
class ShowFile
{
public static void main(String[] args) throws IOException
{
File file = new File("C:\\Users\\hyning\\Desktop\\java基础笔记\\day21\\");
show(file,0);
System.out.println("Hello World!");
}
public static void show(File file,int level) throws IOException
{
System.out.println("Dir: ... "+file.getName()+"..."+level);
//获取指定路径下的文件对象
File[] f = file.listFiles();
++level;
//遍历文件夹
for(int i=0; i<f.length; i++)
{
if(f[i].isDirectory())
{
show(f[i],level);
}
else if(f[i].isFile()&&(!f[i].isHidden()))
{
// System.out.println(f[i].getAbsolutePath() +" ... "+f[i].getName()+"..."+level);
System.out.println("File: ... "+f[i].getName()+"..."+level);
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2