IO(二) File类基本说明

来源:互联网 发布:数据统计工作要求 编辑:程序博客网 时间:2024/06/12 23:19

流对象只能读,写文件或文件夹对象。 获取,更改文件属性需用到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




0 0
原创粉丝点击