标签:
一、概述:
1、File类:在整个IO包中与文件本身有关的操作类,所有的与文件本身有关指的是创建、删除文件等操作。在java.io包中的File类本身是一个跨平台的文件操作类,所以在操作中要更多的考虑到各个操作系统的区别。
2、特点:
1)用来将文件或文件夹封装成对象
2)方便于对文件与文件夹的属性信息进行操作
3)File对象可以作为多数传递给流的构造函数
二、常用方法:
File类
File 即指文件也指文件夹。
File类构造方法和字段摘要
staticString pathSeparator 路径分隔符,window下是";"。
staticchar pathSeparatorChar 路径分隔符,window下是";"。
staticString separator 路径分隔符,window下是"\"。
staticchar separatorChar 路径分隔符,window下是"\"。
File(Fileparent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(Stringpathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(Stringparent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URIuri) 通过将给定的 file: /URI 转换为一个抽象路径名来创建一个新的 File 实例。
File的相关方法
StringgetName():返回文件名或路径名(若是路径,返回最后一级子路径名)
StringgetPath():返回对象对应的路径名
File getAbsoluteFile():返回绝对路径
StringgetAbsolutePath():返回对象对应的绝对路径
StringgetParent():返回文件目录的上一级目录名
booleanrenameTo(File newName):重命名此File对象对应的文件或目录,若重命名成功返回true;
booleanexists():判断对象对应的文件或目录是否存在;
booleancanWrite():判断对象对应文件或目录是否可写;
booleancanRead():判断对象对应文件或目录是否可读;
booleanisFile():判断对象是文件,不是目录;
booleanisDirectory() 判断对象的文件是否是一个目录;
booleanisAbsolute() 判断对象对应文件或目录是否为绝对路径名;
booleancreateNewFile() 当且仅当不存在,该方法创建一个该File对象所指定的新文件,创建成功返回true。
booleandelete():删除File对象所对应的文件或路径;
booleanmkdir() 创建File对象所对应的目录,调用该方法的File对象必须对应路径,而不是文件。
String[]list():列出File对象的所有子文件名和路径名。
File[]listFiles():列出File对象的所有子文件和路径。
staticFile[] listRoots():列出系统所有的根路径;
二、创建File对象:
方式一:File f1 =new File("a.txt");
---> 将a.txt封装成对象,可将已有的和未出现的文件或文件夹封装成对象
方式二:File f2 =new File("c:\\abc","b.txt");
---> 分别指定文件夹和文件。好处:降低了两者的关联程度,
方式三:File d = newFile("c:\\abc"); File f3 = newFile(d,"c.txt");
---> 可以传入父目录和文件名。
目录分隔符:调用File.separator,相当于是反斜杠 \
Ex1.创建File对象
- public class FileDemo {
-
-
- public static void main(String[] args) {
-
- File file = new File("c:\\1.txt");
-
-
- File file1 = new File("c:\\","1.txt");
-
-
- File dir = new File("c:\\");
-
- File file2 = new File(dir,"1.txt");
-
-
- File f = new File("c:"+File.separator+"abc"+File.separator+"1.txt");
-
- System.out.println(f);
- }
-
- }
Ex2.File对象常用方法
- public class FileMethodTest {
-
-
- public static void main(String[] args) throws IOException {
-
-
-
- File file = new File("e:\\");
-
-
- System.out.println(file.getFreeSpace());
-
- }
-
- public static void methodDemo2(File file) throws IOException {
-
-
-
-
-
- boolean b = file.mkdirs();
- System.out.println(b);
-
- System.out.println("file:"+file.isFile());
- System.out.println("dir:"+file.isDirectory());
- }
-
- private static void methodDemo1(File file) {
- String path = file.getAbsolutePath();
- String path1 = file.getPath();
- System.out.println("path="+path);
- System.out.println("path1="+path1);
-
-
- long time = file.lastModified();
- Date date = new Date(time);
- DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
- String str_date = dateFormat.format(date);
- System.out.println(time);
- System.out.println(str_date);
-
- boolean b = file.isHidden();
- System.out.println("isHidden():"+b);
-
- }
-
- }
Ex3.Filename过滤器
- import java.io.File;
- import java.io.FilenameFilter;
-
- import cn.itcast.filter.FilterByContain;
- import cn.itcast.filter.FilterBySuffix;
-
- public class FilenameFilterDemo {
-
-
- public static void main(String[] args) {
-
-
-
-
- File dir = new File("c:\\");
-
- FilenameFilter filter = new FilterBySuffix(".class");
-
- filter = new FilterByContain("Demo");
- String[] names = dir.list(filter);
- for (String name : names) {
- System.out.println(name);
-
- }
-
- }
-
- }
-
- import java.io.File;
- import java.io.FileFilter;
-
- public class FileFilterBySuffix implements FileFilter {
-
- private String suffix;
-
-
- public FileFilterBySuffix(String suffix) {
- super();
- this.suffix = suffix;
- }
-
-
- @Override
- public boolean accept(File pathname) {
-
- return pathname.getName().endsWith(suffix);
- }
-
- }
<二>递归
1.递归(Recursion)
现在要求输出一个给定目录中的全部文件的路径。
本程序肯定只能依靠递归的操作完成,因为在一个给定的路径下有可能还是文件夹,那么如果是文件夹的话则肯定要继续列出,重复判断。
递归:程序调用自身的编程技巧
递归就是在方法里调用自身;
在使用递归时,必须有一个明确的递归结束条件,称为递归出口。
Ex1:列出文件夹下所有文件(包含子文件夹内)
- import java.io.File;
-
- public class GetAllFilesTest {
-
-
- public static void main(String[] args) {
-
-
-
- File dir = new File("e:\\JavaSE_code");
- getAllFiles(dir);
- }
-
- public static void getAllFiles(File dir){
-
- System.out.println("dir:"+dir);
-
- File[] files = dir.listFiles();
-
-
- for(File file : files){
-
- if(file.isDirectory()){
- getAllFiles(file);
- }else{
- System.out.println("file:"+file);
-
- }
- }
- }
-
- }
Ex1:删除文件夹下所有文件(包含子文件夹内)
- import java.io.File;
-
- public class DeleteDirTest {
-
-
- public static void main(String[] args) {
-
-
-
- File dir = new File("E:\\test");
-
-
- deleteDir(dir);
- }
-
- public static void deleteDir(File dir) {
-
-
- File[] files = dir.listFiles();
-
-
- for (File file : files) {
-
-
- if (file.isDirectory()) {
- deleteDir(file);
- } else {
- System.out.println(file + ":" + file.delete());
- }
-
- }
- System.out.println(dir + ":" + dir.delete());
-
- }
-
- }
黑马程序员_File类与递归
标签:
原文地址:http://www.cnblogs.com/shujin/p/4425619.html