『Java』IO--File类基础

流对象不能去操作文件夹,不能去操作属性信息. 流只能操作数据.文件类的出现正好弥补了流的不足之处.File类是专门操作文件用的

 

File类

✔用来将文件或者文件夹封装成对象

✔方便对文件与文件夹的属性信息进行操作

✔File对象可以作为参数传递给流的构造函数

 

File类常见的方法:

1,创建.

 

 

在指定位置创建文件,如果该文件已经存在,则不创建,返回false和输出流不一样,输出流一建立就创建文件,而且文件如果已经存在,也会覆盖的.

 

 

 

创建临时文件,一些软件中很常见.软件运行完后,自动删除.

 

 

 

创建文件夹

Mkdir()创建一级目录.mkdirs()创建多级目录

2,删除

 

 

 

 

deleteOnExit()在程序退出时删除指定文件…….
递归删除,文件文件夹…..java删除不走回车站
import java.io.*;
class deleteDemo{
	public static void main(String[] args){
			File f=new File("D:\\Testdelete");
			remove(f);
	}
	public static void remove(File f){//递归循环掉调用自己删除
			File[] fi=f.listFiles();
			for(int i=0;i<fi.length;i++){
		//一般情况建议先判断下是否为隐藏.,有些隐藏文件,java无法访问
				if(fi[i].isDirectory())
						remove(fi[i]);
				else   //else一定要加上,如果不是目录才走else.....
					System.out.println(fi[i]+":删:除:"+fi[i].delete());
			}
			System.out.println(f+"----"+f.delete());
	}
}

 

 

 

3,判断

exists()判断文件或目录是否存在

 

 

 

判断是否为文件或文件夹.

 

 

 

isHidden()判断是否为隐藏文件

 

 

 

判断是为绝对路径(有详细的盘符)

 

4,获取:

 

 

 

getPath(),返回的是你封装的路径.

 

 

 

getAbsoluteFile()只返回绝对路径不看封装路径.[开发中一般用返回为File的,功能比较多]

 

 

 

getPath()与getAbsoluteFile()的区别:

 

 

 

返回绝对路径中的父目录(上一次目录),如果获取相对路径(没有具体的盘符),返回null.

 

 

 

List方法(一般返回File[]比较常用,因为返回File后功能多)

 

 

 

过滤文件

List(FilenameFilter filter)实例:(匿名对象,复写接口中的accept方法……………………………………..)

其中,涉及到了String的一个判断末尾是否包含指定字符串的方法endsWith();

 

 

 

用listFiles()方法[递归],打印出包含子类的文件目录,实例:

递归要注意:

1,限定条件

2,要注意递归的次数,尽量避免内存溢出

 

 

 

升级版,每层加上相应的空格数,显得更有层次感;

 

 

 

listRootS()实例:

 

 

其他:

 

 

 

练习:

import java.io.*;
import java.util.*;
//需求:将一个制定目录下的MP3文件的绝对路径,存储到一个文本文件中.
//建立一个MP3文件列表文件
class listDemo{
	public static void main(String[] args)throws Exception{
		File dir=new File("D:/Users/Jack/Music/KuGou");//指引出索引目录
		List<File> list=new ArrayList<File>();//加你list集合做临时存储
		dirToList(list,dir);
		System.out.println(list.size());//打印list集合中的大小
		File file=new File(dir,"list.txt");//指引目标文件
		listToFile(list,file);
	}
	public static void dirToList(List<File> list,File dir){//抽出指引目录下的所有MP3文件
			//建立临时File数组临时存储,dir下的所有目录和文件
			File[] fi=dir.listFiles();
			//遍历该数组,做出抽选.只要结尾为MP3的文件
			for(File f:fi){
				if(f.isDirectory())
					dirToList(list,f);//判断是目录的话,再此调用该方法
				else
					if(f.getName().endsWith(".mp3"))
						list.add(f);
			}
	}
	//将list下的临时存储MP3文件写入文件
	public static void listToFile(List<File> list,File f)throws Exception{
		BufferedWriter bufw=null;
		try{
			bufw=new BufferedWriter(new FileWriter(f));
			//遍历数组中的File文件,只打印绝对路径
for(File ff:list){								 bufw.write(ff.getAbsolutePath());
			bufw.newLine();
			bufw.flush();
		}
		}
		catch(Exception e){
			throw e;
		}
		finally{
			try{
				if(bufw!=null)
					bufw.close();
			}
			catch(Exception ee){
				throw ee;			
			}
		}
	}
}

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值