IO(二) File类基本说明

流对象只能读,写文件或文件夹对象。 获取,更改文件属性需用到File类对象。FIle类中封装了对文件的新增, 修改,删除, 查询信息等方法。

1 FIle类基本方法

(1)创建
boolean createNewFile():如果该文件不存在,会创建,如果已存在,则不创建。不会像输出流一样会覆盖。
boolean mkdir();
boolean mkdirs();
(2)删除。
boolean delete();
void deleteOnExit();

(3)获取:
String getAbsolutePath();
String getPath();
String getParent();  //当file对象为文件, 返回的是文件所在目录。如果是文件夹,返回Null;
String getName();
long length();
long lastModified();

(4)判断:
boolean exists();
boolean isFile();
boolean isDirectory();


2 样例递归展示文件夹里的所有文件信息


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileDemo {
	
	public static void main(String[] args) throws IOException {
		File file = new File("G:\\easy_ui\\jquery-easyui-1.3.4\\");
		FileWriter fWriter= new FileWriter("G:\\files.txt");
		BufferedWriter bWriter = new BufferedWriter(fWriter);
		listFile(file,0,bWriter);
		bWriter.close();
	}
	private static void listFile(File file,int level,BufferedWriter bWriter) throws IOException{
		bWriter.write(getSuffix(level)+file.getName()+"\r\n");
		level++;
		if(file.isDirectory()){//文件夹, 列出文件
			File[] files = file.listFiles();
			for(int i=0,len=files.length;i<len;i++){
				listFile(files[i],level,bWriter);
			}
		}
	}
	private static String getSuffix(int level){
		String resString ="";
		for(int i=0;i<level;i++)
			resString+="|--";
		return resString;
	}
}

运行结果(files.txt部分内容) :
jquery-easyui-1.3.4
|--api
|--|--accordion.html
|--|--api
|--|--|--Base
|--|--|--|--Documentation.html
|--|--|--|--draggable.html
|--|--|--|--droppable.html
|--|--|--|--easyloader.html
|--|--|--|--pagination.html
|--|--|--|--parser.html
|--|--|--|--progressbar.html
|--|--|--|--resizable.html
|--|--|--|--searchbox.html
|--|--|--|--tooltip.html
|--|--|--|--~$aggable.html

3  递归删除文件夹

java中没有内置递归删除的方法, 当文件夹里含文件,则无法删除该文件夹。 因此,必须先删除文件夹中的所有元素, 才能删除文件夹。

import java.io.File;

public class FileRemoveDir {
	public static void main(String[] args) {
		String dirString = "G:\\easy_ui\\jquery-easyui-1.3.4";
		File dir = new File(dirString);
		removeDir(dir);
		System.out.println("删除成功,删除目录:"+dirString);
	}

	private static void removeDir(File dir){
		if(dir.isDirectory()){
			File[] files = dir.listFiles();
			for(int i=0,len=files.length;i<len;i++){
				removeDir(files[i]);
			}
		}
		dir.delete();
	}
	
}

运行结果:硬盘上已删除该文件夹,打印台输出内容,

删除成功,删除目录:G:\easy_ui\jquery-easyui-1.3.4  


3 过滤文件


File对象可以通过listFiles(FilenameFilter filter) 获取文件夹下的元素,并通过过滤器进行过滤。 

自定义的过滤器对象必须实现FilenameFilter接口,并实现Boolean accept(File dir, String name)  方法。

案例  过滤删选文件夹G:\easy_ui\jquery-easyui-1.3.4 下.html的文件

import java.io.File;
import java.io.FilenameFilter;

public class FileFilterDemo {

	public static void main(String[] args) {
		File file = new File("G:\\easy_ui\\jquery-easyui-1.3.4");
		String[] fileNames = file.list(new MyFilter(".html"));
		for(String fileName : fileNames){
			System.out.println(fileName);
		}
	}

}

class MyFilter implements  FilenameFilter{
	private String suffix;
	
	public MyFilter(String suffix){
		this.suffix=suffix;
	}
	
	public boolean accept(File dir, String name) {
		if(name.endsWith(suffix))
			return true;
		return false;
	}
}

运行结果:

index-api.html
index-demo.html




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值