黑马程序员——关于javaI/O系统中File类的总结

------- android培训java培训、期待与您交流! ----------

1.关于File类

File类是java中用于封装路径和文件的类,是文件和目录路径名的抽象表现形式。之前的字符流和字节流能将文件内容进行复制等操作,但是不能操作文件夹,引出File类来可以很方便的操作文件和文件夹。

2.File类构造方法概述

要了解File类,先了解其常用的构造方法:
方法一:      
       File file=new File("a.txt");
	a.txt封装成File对象。可以将已有的和未出现的文件或者文件夹封装成对象。
	注意:该File类不一定是创建的文件也有可能是文件夹
 方法二:
       File file2=new File("c:\\abc","b.txt");
        将文件所在目录路径和文件一起传入,指定文件路径。该方法将路径和文件确定,关联性强。
 方法三:
            File d=new File("c:\\abc");
            File f3=new File(d,"c.txt");
        将文件目录路径封装成对象。再创建文件对象。降低了文件于父目录的关联性。
补充知识:
        File.separator表示目录分隔符,可以跨平台使用。相当于路径中的“\”(双斜杠\\windows中表示表示转义后的分隔符,但是在linux系统中就不是)。在我们编写程序过程中,常使用“\\”分隔符。

3.File类常用方法

	boolean createNewFile();//在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象一建立就创建文件。而且文件已经存在,会覆盖。boolean mkdir();//创建文件夹,只能创建一级文件夹
 	boolean delete();//删除文件或目录。文件存在,返回true;文件不存在或者正在被执行,返回false, void deleteOnExit();//在程序退出时删除指定文件
	boolean exists();//文件是否存在,boolean isFile();//是否是文件,boolean isDirectory();//是否是文件夹,boolean isAbsolute();//文件是否是绝对路径  String getName();//获取文件名,String getPath();String getAbsolutePath();//获取文件的绝对路径

4.File类的应用示例

示例一:
/*
需求:将一个目录下所有的java文件路径复制到一个文件内
思路:
	1.将目的路径中的java文件取出,将File对象存入List
	2.判断是否是Java文件,看文件名结尾是否是.java
	3.创建流对象用于将文件名存入到指定文件。
*/
import java.io.*;
import java.util.*;

class FileTest1
{
public static void main(String[] args)throws IOException
{
	File ff=new File("F:\\Java13");//创建File类,关联该路径文件夹
	List<File> file=new ArrayList<File>();//创建List用于存放文件夹内的java文件封装的File对象
	FileJih(ff,file);//调用方法,将java文件存入list中
	toWrite(file,"javalistname.txt");
}
public static void FileJih(File dir,List<File> al)
{
	File[] fils=dir.listFiles();
	for(File f:fils)
	{
		if(f.isDirectory())
			FileJih(f,al);//递归调用,找到该目录下所有java文件
		else
			{
				if((f.getName()).endsWith(".java"))//判断是否为java结尾的文件
				al.add(f);//将java文件的File加入到list中
			}
	}

}
public static void toWrite(List<File> t,String name)throws IOException
{
	BufferedWriter bw=new BufferedWriter(new FileWriter(name));
	for(File f:t)
	{
		bw.write(f.getAbsolutePath());//将java文件名存入文件内
		bw.newLine();//换行
		bw.flush();//刷新要注意
	}	
	bw.close();
}
}
运行结果:
	实现了功能,将java文件名存入到指定的txt文件,但是没有分级显示,示例二可以实现该功能
示例二:
import java.io.*;
class FileTest2
{
public static void main(String[] args)
{
	File div=new File("F:\\xuexi");
	showFile(div,1);
}
public static String getlevel(int level)
{
	StringBuilder sb=new StringBuilder();
	for(int x=0;x<level;x++)
	{
		sb.append("|--");
	}
	return sb.toString();
}
public static void showFile(File dir,int level)
{
	System.out.println(getlevel(level)+dir);
	level++;
	File[] files=dir.listFiles();
	for(int x=0;x<files.length;x++)
	{
		if(files[x].isDirectory())
			showFile(files[x],level);
		else
			System.out.println(getlevel(level)+files[x]);

	}

}
}
总结:
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值