分享
 
 
 

彻底明白JAVA的IO系统-1(认识File)

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

一.FileClass

1. classFile对象描述了所指定路径下的文件和目录的信息。通过File对象,可以查看某个路径下的文件和目录信息,并可操作路径下的文件和目录。

2. classFile的应用

2.1 查看(查询)某个路径下的文件信息。

2.1.1 classFile的构造函数

classFile有两类构造函数,一类带有一个参数,用于产生一个描述参数所所指向的路径下的文件系统的对象;另一类带有两数,第一个参数表示路径,第二个参数表示子目录,用来产生描述第一个参数所指向的路径下的某个子目录的文件信息,子目录名称由第二个参数指定。如:

File path = new File(“c:\\”);产生一个描述c:\下的文件信息的对象

File path = new File(“c:\\”, “test”);产生一个描述c:\的test子目录的文件信息的对象。

2.1.2 list()和list(FilenameFilter filter)函数

1) list()函数以String数组的形式返回一个File对象所描述的文件信息。返回的是路径下的所有文件和目录的文件名和目录名。

2) list(FilenameFilter filter)函数则提供了查询功能,通过它可能查询出满足特定条件的文件名和目录名。

2.1.3 用FinenameFilter接口进行文件或目录的查询

2.1.3.1. 这个接口只包含一个函数:boolean accept(File dir, String name),第二个参数代表一个文件或目录的名称,第一个参数代表文件或目录所在的目录的名称。当返回true,表示文件满足查询条件,要被放入结果中;否则,表示文件不满足要求。

2.1.3.2. 工作原理

当调用某个File对象的list(FilenameFilter filter)函数时, 会对File对象中的每一个文件或目录调用参数filter中的accept()方法。在对一个文件或目录调用accept()函数时把它的名称以及一个描述它所在的目录的File对象作为参数传给accept()函数。

2.1.4 一个简单的实例

import java.io.File;

import java.io.FilenameFilter;

class DirList{

public void printFile(String dir, String filter){

File path = new File(dir);

String[] fileList;

if(filter.length()==0){

System.out.println("\nAll file:");

fileList = path.list();//取得所有文件信息

}

else{

System.out.println("\nAll file including " + filter);

//取得满足查询条件的文件信息

fileList = path.list(new DirFilter(filter));

}

for(int i=0; i<fileList.length; i++)

System.out.println(fileList[i]);

}

public void printFile(String dir){

printFile(dir, "");

}

}

class DirFilter implements FilenameFilter{

String afn;//存放查询条件

DirFilter(String afn) { this.afn = afn; }

//满足查询条件,返回true

public boolean accept(File dir, String name){

return name.indexOf(afn)!=-1;

}

}

public class TestIO{

public static void main(String[] args){

DirList dirList = new DirList();

//显示F:\test下的文件信息

dirList.printFile("F:\\test");

//显示F:\test下名称包含“.rar”文件信息

dirList.printFile("F:\\test", ".rar");

//显示F:\test下名称包含“r”文件信息

dirList.printFile("F:\\test", "r");

}

}

这个只是一个简单的例子,只要完善accept()函数,你也可以做出一个Java版的dir命令来。

2.2 当然,我们还能通过File来文件或目录进行创建、删除和改名的操作。

import java.io.File;

import java.io.FilenameFilter;

import java.util.Date;

import java.text.SimpleDateFormat;

class DirFilter implements FilenameFilter{

String afn;

DirFilter(String afn) { this.afn = afn; }

public boolean accept(File dir, String name){

return name.indexOf(afn)!=-1;

}

}

class OptFile{

public static String getAbsolutePath(File f){

return f.getAbsolutePath();

}

public static String getPath(File f){

return f.getParent();

}

public static String getName(File f){

return f.getName();

}

public static long getLength(File f){

return f.length();

}

public static String getParent(File f){

return f.getParent();

}

public static String getLastModified(File f, String format){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

if(format.equals("ymdh"))

sdf = new SimpleDateFormat("yyyy-MM-dd hh");

else if(format.equals("ymdhm"))

sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");

return sdf.format((new Date(f.lastModified())));

}

public static String getLastModified(File f){

return getLastModified(f, "ymd");

}

public static boolean canRead(File f){

return f.canRead();

}

public static boolean canWrite(File f){

return f.canWrite();

}

public static boolean isFile(File f){

return f.isFile();

}

public static boolean isDir(File f){

return f.isDirectory();

}

public static boolean rename(File oldName, File newName){

return oldName.renameTo(newName);

}

public static boolean delete(File f){

return f.delete();

}

public static boolean mkdir(File f){

return f.mkdirs();

}

/**

* 从指定路径中查询文件

*/

public static File[] findFile(String filePath, String fileName){

File f = new File(filePath);

File[] result = f.listFiles(new DirFilter(fileName));

return result;

}

public static void printFileAtt(File f){

System.out.println(

" Absolute path: " + getAbsolutePath(f) +

"\n Can read: " + canRead(f) +

"\n Can write: " + canWrite(f) +

"\n path: " + getPath(f) +

"\n name: " + getName(f) +

"\n parent: " + getParent(f) +

"\n length: " + getLength(f) +

"\n lastModified: " + getLastModified(f));

if(isFile(f))

System.out.println(" it's a file");

else if(isDir(f))

System.out.println(" it's a directory");

}

}

public class TestIO{

public static void main(String[] args){

File f1 = new File("F:\\nepalon\\thinkinginjava\\test");

File f2 = new File("F:\\nepalon\\thinkinginjava\\test\\aa ");

OptFile.printFileAtt(f1);

OptFile.printFileAtt(f2);

//当对文件或目录进行改名,且更新到一个不同的下时,

//会先把文件或整个目录剪切到新目录下,再重新命名

File nf2 = new File("F:\\nepalon\\thinkinginjava\\使用log4j.files");

if(OptFile.rename(f2, nf2)){

System.out.println("after rename f2:");

OptFile.printFileAtt(nf2);

}

else

System.out.println("rename nf2 failly");

//进行删除操作时,只能删除文件;如果删除的是目录,会返回false

File df = new File("F:\\nepalon\\thinkinginjava\\test\\1001.doc");

if(OptFile.delete(df))

System.out.println("Delete df successfully");

else

System.out.println("Delete df failly");

System.out.println("Find file with name \"1001\"");

OptFile.findFile("F:\\nepalon\\thinkinginjava\\test", "1001");

File mf = new File("F:\\nepalon\\thinkinginjava\\test\\1001");

if(OptFile.mkdir(mf))

System.out.println("create directory mf successfully");

else

System.out.println("create directory mf failly");

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有