4.5 文件處理
I/O處理中,最常見的是對(duì)文件的操作,java.io包中有關(guān)文件處理的類有:File、FileInputStream、FileOutputStream、RamdomAccessFile和FileDescriptor;接口有:FilenameFilter。
4.5.1 文件描述
類File提供了一種與機(jī)器無關(guān)的方式來描述一個(gè)文件對(duì)象的屬性。下面我們介紹類File中提供的各種方法。
◇ 文件或目錄的生成
public File(String path);/*如果path是實(shí)際存在的路徑,則該File對(duì)象
/*表示的是目錄;如果path是文件名,則該File對(duì)象表示的是文件。*/
public File(String path,String name);//path是路徑名,name是文件名
public File(File dir,String name);//dir是路徑名,name是文件名
◇ 文件名的處理
String getName( ); //得到一個(gè)文件的名稱(不包括路徑)
String getPath( ); //得到一個(gè)文件的路徑名
String getAbsolutePath( );//得到一個(gè)文件的絕對(duì)路徑名
String getParent( ); //得到一個(gè)文件的上一級(jí)目錄名
String renameTo(File newName); //將當(dāng)前文件名更名為給定文件的
完整路徑
◇ 文件屬性測(cè)試
boolean exists( ); //測(cè)試當(dāng)前File對(duì)象所指示的文件是否存在
boolean canWrite( );//測(cè)試當(dāng)前文件是否可寫
boolean canRead( );//測(cè)試當(dāng)前文件是否可讀
boolean isFile( ); //測(cè)試當(dāng)前文件是否是文件(不是目錄)
boolean isDirectory( ); //測(cè)試當(dāng)前文件是否是目錄
◇ 普通文件信息和工具
long lastModified( );//得到文件最近一次修改的時(shí)間
long length( ); //得到文件的長度,以字節(jié)為單位
boolean delete( ); //刪除當(dāng)前文件
◇ 目錄操作
boolean mkdir( ); //根據(jù)當(dāng)前對(duì)象生成一個(gè)由該對(duì)象指定的路徑
String list( ); //列出當(dāng)前目錄下的文件
【例4-3】
import java.io.*; //引入java.io包中所有的類
public class FileFilterTest{
public static void main(String args[]){
File dir=new File("d://ex"); //用File 對(duì)象表示一個(gè)目錄
Filter filter=new Filter("java"); //生成一個(gè)名為java的過濾器
System.out.println("list java files in directory "+dir);
String files[]=dir.list(filter); //列出目錄dir下,文件后綴名
為java的所有文件
for(int i=0;i File f=new File(dir,files[i]); //為目錄dir 下的文件或目錄
創(chuàng)建一個(gè)File 對(duì)象
if(f.isFile()) //如果該對(duì)象為后綴為java的文件,
則打印文件名
System.out.println("file "+f);
else
System.out.println("sub directory "+f ); //如果是目錄
則打印目錄名
}
}
}
class Filter implements FilenameFilter{
String extent;
Filter(String extent){
this.extent=extent;
}
public boolean accept(File dir,String name){
return name.endsWith("."+extent); //返回文件的后綴名
}
}
I/O處理中,最常見的是對(duì)文件的操作,java.io包中有關(guān)文件處理的類有:File、FileInputStream、FileOutputStream、RamdomAccessFile和FileDescriptor;接口有:FilenameFilter。
4.5.1 文件描述
類File提供了一種與機(jī)器無關(guān)的方式來描述一個(gè)文件對(duì)象的屬性。下面我們介紹類File中提供的各種方法。
◇ 文件或目錄的生成
public File(String path);/*如果path是實(shí)際存在的路徑,則該File對(duì)象
/*表示的是目錄;如果path是文件名,則該File對(duì)象表示的是文件。*/
public File(String path,String name);//path是路徑名,name是文件名
public File(File dir,String name);//dir是路徑名,name是文件名
◇ 文件名的處理
String getName( ); //得到一個(gè)文件的名稱(不包括路徑)
String getPath( ); //得到一個(gè)文件的路徑名
String getAbsolutePath( );//得到一個(gè)文件的絕對(duì)路徑名
String getParent( ); //得到一個(gè)文件的上一級(jí)目錄名
String renameTo(File newName); //將當(dāng)前文件名更名為給定文件的
完整路徑
◇ 文件屬性測(cè)試
boolean exists( ); //測(cè)試當(dāng)前File對(duì)象所指示的文件是否存在
boolean canWrite( );//測(cè)試當(dāng)前文件是否可寫
boolean canRead( );//測(cè)試當(dāng)前文件是否可讀
boolean isFile( ); //測(cè)試當(dāng)前文件是否是文件(不是目錄)
boolean isDirectory( ); //測(cè)試當(dāng)前文件是否是目錄
◇ 普通文件信息和工具
long lastModified( );//得到文件最近一次修改的時(shí)間
long length( ); //得到文件的長度,以字節(jié)為單位
boolean delete( ); //刪除當(dāng)前文件
◇ 目錄操作
boolean mkdir( ); //根據(jù)當(dāng)前對(duì)象生成一個(gè)由該對(duì)象指定的路徑
String list( ); //列出當(dāng)前目錄下的文件
【例4-3】
import java.io.*; //引入java.io包中所有的類
public class FileFilterTest{
public static void main(String args[]){
File dir=new File("d://ex"); //用File 對(duì)象表示一個(gè)目錄
Filter filter=new Filter("java"); //生成一個(gè)名為java的過濾器
System.out.println("list java files in directory "+dir);
String files[]=dir.list(filter); //列出目錄dir下,文件后綴名
為java的所有文件
for(int i=0;i File f=new File(dir,files[i]); //為目錄dir 下的文件或目錄
創(chuàng)建一個(gè)File 對(duì)象
if(f.isFile()) //如果該對(duì)象為后綴為java的文件,
則打印文件名
System.out.println("file "+f);
else
System.out.println("sub directory "+f ); //如果是目錄
則打印目錄名
}
}
}
class Filter implements FilenameFilter{
String extent;
Filter(String extent){
this.extent=extent;
}
public boolean accept(File dir,String name){
return name.endsWith("."+extent); //返回文件的后綴名
}
}