文件操作小结

本文深入探讨了Java中File类的使用,从创建文件对象到获取路径信息,再到文件名操作及属性测试,最后展示了如何统计指定目录下的文件和目录数量及大小。

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

 

系统中的文件可分为三种:目录文件、真实文件、缓存文件。java抽象类File提供了一些方法用来操纵文件和获得文件的信息。通过File类中的方法可以得到文件或目录的描述信息,包括名称,路径,读写性,长度,修改日期等;也可以生成新的目录,临时文件,改变文件名,删除文件,列出一个目录中所有的文件或找到与条件相匹配的文件等。

 

一.不管是以上何种操作,首先是创建一个新的文件对象

创建任何一个文件,则需要有路径名,路径名用字符串表示

String  filename  = “D:\\myfile”;其中因为字符 ’\’ 属于转义字符,所以再加一个’\’ 这样才能真正表示一个文件的路径名,如果只有文件名而没有指定目录,则会在当前目录下面创建文件 ,构造方法主要有以下三种:

File (File parent, String child)

           parent  路径名和 child 名字符串创建一个新 File 实例。

File(String pathname)
          
通过给定的路径名字符串创建一个新 File 实例。

File(String parent, String child)
          
parent 路径名字符串和 child 路径名字符串创建一个新 File 实例

        具体用哪一种方法取决于访问文件的方式

 

二.Java文件输入输出类库继承关系


三.文件的具体操作

1.获取路径:File f=new File(“data”,temp.dat”);

f.getName():返回文件名字符串  temp.dat”;

f.getParent():返回文件所在目录名  data

f.getPath():返回文件路径  data\temp.dat

f.getAbsolutePath():返回绝对路径 c:\myprog\data\temp.dat”

2.文件名操作:

Public String toString()返回文件名字符串

Public File getParentFile():返回文件对象父文件名

public  getCanonicalPath() 返回规范的路径名称

3.文件属性测试

Public boolean canRead(): 是否能读指定文件

Public boolean canWrite():是否能修改指定文件

Public boolean exists():指定的文件是否存在

Public boolean isDirectory():测试对象是否是目录

Public boolean isAbsolute() 测试路径是否为绝对路径,win32系统中绝对路径以“\\”或盘符后跟“\\”开始

Public boolean isFile():测试对象是否是文件

Public boolean isHidden():测试指定文件是否是隐藏文件

与以上对应的则有文件属性的设置,这里就不说了

(如想了解更多可以查看API文档)

实例1:统计指定目录下的文件和目录的个数,以及文件夹的大小

import java.io.File;

import java.io.FileFilter;

public class FileDisplay{

       /*文件个数*/

       private int filecount = 0;

       /*目录个数*/

       private int mlcount = 0;

       /*文件总长度*/

       private long length=0;

       /**

        * 程序主方法

        * @param args

        */

       public static void main(String[] args) {

              /*创建对象*/

              FileDisplay display = new FileDisplay();

              /*指定路径*/

              String name = "D:\\李瑞辉\\0725\\画图板";

              /*进行统计*/

              display.getCount(name);

              /*输出结果*/

              System.out.println(name + "目录下共找到 " + display.filecount + " 文件");

              System.out.println(name + "目录下共找到 " + display.mlcount + " 目录");

              System.out.println(name + "目录长度为" + display.length);

       }

       /**

        * 进行统计的方法

        * @param name:指定路径

        */

       public void getCount(String name) {

              /*新建文件*/

              File file = new File(name);

              /*列出路径名*/

              File[] list = file.listFiles();

              if (list == null || list.length == 0) {// 如果是空目录或空文件,则结束

                     return ;

              }

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

                     if (list[i].isDirectory()) {/*查看是否是目录*/

                            String dirname = list[i].getAbsolutePath();//获得绝对路径

                            System.out.println("目录:" + dirname);//输出目录绝对路径

                            /*记录目录个数*/

                            mlcount++;

                            getCount(dirname);//继续统计

                     }

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

                            /*累加文件长度*/

                             length += list[i].length();

                             System.out.println("文件: " + list[i].getAbsolutePath());//输出文件绝对路径

                             /*记录文件个数*/

                             filecount++;

                     }

              }

              return ;

       }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值