第十二章 java流与文件操作 第四讲

本文详细介绍了Java中File类的使用方法,包括构造方法、获取文件信息的方法、文件和目录的操作等。通过具体示例展示了如何创建文件和目录、获取文件属性、遍历目录等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第十二章 java流与文件操作 第四讲

四、文件操作-----File类

(1)File类可以用一些方法来操作文件和获取文件的信息包括:更改文件名、删除文件、列出目录下的文件以及文件对象属性的描述信息等。

File的构造方法

public File(String pathname);

File f1 = new File(“data.txt”);

public File(String path,String name);

File f2 = new File(“c:\\aa”,”data.txt”);

public File(File parent,String chile);

File file4=new File(“c:/example”,”demo.txt”);

注:pathname指路径名字符串,path指父类路径名,String 是文件名

(2) 静态常量

由于不同操作系统的文件分隔符以及路径分隔符不同,因此,如果要获取当前系统的文件和路径的分隔符,可使用以下两个静态常量。

public static final char separatorChar;

public static final String separator;

实例:File file = new File("c:"+File.separator+"abc"+File.separator+"a.txt");

注:这两个常量可以在两种操作系统下进行,如实例所写的一样,为:c:\\abc\\a

(3) 访问文件常用的方法

(1)访问文件对象

File f = new File(“res\aa.txt”);

public String getName() ------结果为: aa.txt

//返回文件对象名,不包含路径名

public String getPath() -------- res\aa.txt

//File对象中封装的路径是什么,获取的就是什么

public String getAbsolutePath()

//返回绝对路径名,包含文件名---------- D:\java\java\res\aa.txt

public String getParent()

//返回父文件对象的路径名,如果封装的是相对路径,返回null -------res

public File getParentFile()

//返回父文件对象 ------------- D:\java\java\res

(2)获得文件属性

 public long length() //返回文件的字节长度

 public boolean exists() //测试指定的文件是否存在

 public long lastModified() //返回文件最后被修改的时间

(3)文件操作

 public boolean renameTo(Filedest) //文件重命名

 public boolean delete() //删除空目录或文件

(4)目录操作

 public boolean mkdir () //创建目录,正常建立时返回true

补充:在创建目录时,可以加上if语句来判断是否存在,如果不存在在创建

(1)单级目录的创建

File f3 = new File("c:\\aa");

if(!f3.exists()){

f3.mkdir();

}

(2)多级目录的创建

File f4 = new File("c:\\bb\\cc\\dd");

if(!f4.exists()){

f4.mkdirs();

}

 public String[] list() //返回目录中的所有文件名字符串

补充:

(1)显示当前文件夹里的所有东西------list() 只能显示文件名

String[] arr = f3.list();

for(String name:arr){

System.out.println(name);

}

(2)显示当前文件夹下的文件名和子文件夹-----listFiles()

File[] files = f3.listFiles();

for(int i=0;i<files.length;i++){ System.out.println(files[i].getName()+”/t”+files[i].lastModified()+”/t”+files[i].isFile()?”文件”:”目录”);}

(5) 利用子文件递归方法调用文件的子文件----使用递归时,一定要有递归的终止条件,并且调用次数也不要过多,否则会出现内存溢出.

第一种:

public void listDir(File dir){

//方法listDir()里的参数是File类的对象

System.out.println(dir.getName()+"以下是文件下的子文件:");

File[] files1 = dir.listFiles();

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

if(files1[i].isFile()){

System.out.println(files1[i].getName());

}else{

listDir(files1[i]);//递归的使用

}

}

第二种:

public void listDir1(File dir,int level){

System.out.println(getLevel(level)+dir.getName());

level++;

File[] files = dir.listFiles();

for(int x =0; x<files.length; x++){

if(files[x].isDirectory())//如果遍历到的是目录。

listDir1(files[x],level);//递归。

else

System.out.println(getLevel(level)+files[x].getName());

}

}

//增加目录层次

public String getLevel(int level){

StringBuilder sb = new StringBuilder();

注:是缓冲的字符串,和StringBuffered 一样

sb.append("|--");

for(int x=0; x<level; x++){

sb.insert(0,"| "); //插入---从第0个开始,

}

return sb.toString();

}

}

输出的结果大概为:

|--aa

| |--rr

(6) 过滤器的应用------FileFilter---是接口,所有要想实现必须实例化类,根据继承

public class MyFileFilter implements FileFilter{

String externName;//设置过滤条件----即是过滤那个文件结尾的文件

public MyFileFilter(String externName){

this.externName=externName;

}

//以上构造函数时为了让用户自己输入过滤条件,并调用

//显示验证的文件是否符合过滤条件

public boolean accept(File pathname){

if(pathname.isDirectory()){

return false;

}

//查找 . 并用条件判断

String filename = pathname.getName();

int n = filename.indexOf(".");

if(n==-1 || n==filename.length()-1){

return false;

}

//文件截取从.之后

if(filename.substring(n+1).equals(externName)){

return true;

}

return false;

}

(7)随机文件操作--------- RandomAccessFile

RandomAccessFile raf = new RandomAccessFile(“dome.txt”,”rw”);

raf.writeInt(1234); 向文件中写入

raf.seek(0); //定位到最开头

int n = raf.readInt(); 读取文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值