文档章节

java File类型

b
 buleberry
发布于 2014/05/14 18:26
字数 1832
阅读 177
收藏 11

在Java中提供了操作文件及目录(即我们所说的文件夹)类File。有以下几点注意事项

(1)不论是文件还是目录都使用File类操作;

   (2)File类只提供操作文件及目录的方法,并不能访问文件的内容,所以他描述的是文件本身的属性;

   (3)如果要访问文件本身,用到了我们以后要学习的IO流.

   下面让我们开始File的学习吧。

   一:构造方法

   File 文件名/目录名 = new File("文字路径字符串");

   在Java中提供了几种创建文件及目录的构造方法,但大体上都是用参数中的文字路径字符串来创建,路径可以是相对路径或绝对路径,区别在于:

   (1)绝对路径名包含了他所在文件的全部信息

   (2)相对路径必须依据其他路径名的信息进行解释

   二:一般方法

   (1)文件检测相关方法

   a:boolean isDirectory():判断File对象是不是目录

   b:boolean isFile():判断File对象是不是文件

   c:boolean exists():判断File对象对应的文件或目录是不是存在

   d:boolean canWrite():判断FIle对象对应的文件或目录是否可写

e:boolean canRead():判断FIle对象对应的文件或目录是否可读

   (2)文件操作的相关方法

   a:boolean createNewFile():路径名指定的文件不存在时,创建一个新的空文件

   b:boolean delete():删除File对象对应的文件或目录

   (3)目录操作的相关方法

   a:boolean mkdir():单层创建空文件夹

   b:boolean mkdirs():多层创建文件夹

   c:String[] list():支队File为文件夹时有效,返回这个目录下的所有文件及子目录

   d:File[] listFiles():返回File对象表示的路径下的所有文件对象数组

   (4)访问文件相关方法

   a:String getName():获得文件或目录的名字

   b:String getPath() :获得文件或目录的相对路径

   c:String getAbsolutePath():获得文件目录的绝对路径

   d:String getParent():获得对象对应的目录的父级目录

   e:long lastModified():获得文件或目录的最后修改时间

f:long length() :获得文件内容的长度

   g:boolean renameTo("新名字"):重命名此对象的名字,成功返回true,否则返回false

   三:文件操作

   1:目录的创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  class  MyFile {
    public  static  void  main(String[] args) {
        //创建一个目录
        File file1 =  new  File("d:\\test");
        //判断对象是不是目录
        System.out.println("是目录吗?"+file1.isDirectory());
        //判断对象是不是文件
        System.out.println("是文件吗?"+file1.isFile());
        //获得目录名
        System.out.println("名称:"+file1.getName());
        //获得相对路径
        System.out.println("相对路径:"+file1.getPath());
        //获得绝对路径
        System.out.println("绝对路径:"+file1.getAbsolutePath());
        //最后修改时间
        System.out.println("修改时间:"+file1.lastModified());
        //文件大小
        System.out.println("文件大小:"+file1.length());
    }
}

程序首次运行结果

1
2
3
4
5
6
7
是目录吗?false
是文件吗?false
名称:test
相对路径:d:\test
绝对路径:d:\test
修改时间:0
文件大小:0

细心的你可以看到,file1对象是目录啊,怎么在判断“是不是目录”时输出了false呢?这是因为只是创建了代表他是目录的对象,还没有真正的创建,这时候要用到mkdir()/mkdirs()方法,如下:

1
2
3
4
5
6
7
8
9
public  class  MyFile {
    public  static  void  main(String[] args) {
        //创建一个目录
        File file1 =  new  File("d:\\test\\test");
        file1.mkdirs();//创建了多级目录
        //判断对象是不是目录
        System.out.println("是目录吗?"+file1.isDirectory());     
    }
}

程序首次运行结果:

1
是目录吗?true

2:文件的创建

1
2
3
4
5
6
7
8
9
public  class  MyFile {
    public  static  void  main(String[] args) {
        //创建一个文件
        File file1 =  new  File("d:\\a.txt");
                                                                                                                                                                                                                                                                
        //判断对象是不是文件
        System.out.println("是文件吗?"+file1.isFile());  
    }
}

   首次运行结果:

1
是文件吗?false

同样会发现类似于上面的问题,这是因为他只是代表了一个文件对象,并没有真正的创建,要用到createNewFile()方法,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
public  class  MyFile {
    public  static  void  main(String[] args) {
        //创建一个文件对象
        File file1 =  new  File("d:\\a.txt");
        try  {
            file1.createNewFile();//创建真正的文件
        }  catch  (IOException e) {
            e.printStackTrace();
        }
        //判断对象是不是文件
        System.out.println("是文件吗?"+file1.isFile());  
    }
}

结果

1
是文件吗?true

3:文件夹与文件的创建目录

   文件时存放在文件夹下的,所以应该先创建文件夹,后创建文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public  class  MyFile {
    public  static  void  main(String[] args) {
        //代表一个文件夹对象,单层的创建
        File f3 =  new  File("d:/test");
        File f4 =  new  File("d:/test/a.txt");
        f3.mkdir();//先创建文件夹,才能在文件夹下创建文件
        try  {
            f4.createNewFile();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
                                                                                                                                                                   
        //代表一个文件夹对象,多层的创建
        File f5=  new  File("d:/test/test/test");
        File f6 =  new  File("d:/test/test/test/a.txt");
        f5.mkdirs();//多层创建
        try  {
            f6.createNewFile();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果为,在D磁盘的test文件夹下有一个a.txt,在D磁盘的test/test/test下有一个a.txt文件。

   4:编程:判断是不是有这个文件,若有则删除,没有则创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public  class  TestFileCreatAndDele {
    public  static  void  main(String[] args) {
        File f1 =  new  File("d:/a.txt");
        if(f1.exists()){//文件在吗
            f1.delete();//在就删除
        }else{//不在
            try  {
                f1.createNewFile();//就重新创建
            }  catch  (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

5:文件的筛选

 在File中的list()方法中可以接受一个FileNameFilter的参数,FileNameFilter是个过滤器也是一个接口,可以通过匿名内部类的形式实现他的accept()方法,从而达到筛选的目的 ,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//筛选出文件名为.java后缀的文件
public  class  TestFileFilter {
    public  static  void  main(String[] args) {
        File file =  new  File("d:/test");//创建目录
        File[] f = file.listFiles(new  FileFilter(){//列出目录下的符合条件的文件
            @Override
            public  boolean  accept(File ff) {//重写accept方法
                if(ff.getName().endsWith(".java")){//name以.java结尾的为符合条件,将被筛出
                    return  true;
                                                            
                }else{
                    return  false;
                }
            }
                                                    
        });
        for(File g:f){//输出筛出的文件
            System.out.println(g.getName());
        }
    }
}

测试之前,在d:/test目录下导入一些文件,以便测试哦。。。结果为筛出了所有.java文件

   6:文件的逐层读取

   File的listFiles()只能列出当前文件夹下的文件及目录,那么其子目录下的文件及目录该如何获取呢?解决的办法有很多,在这运用递归解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//逐层获取文件及目录
public  class  TestFindFile {
    public  static  void  openAll(File f) {// 递归的实现
        File[] arr = f.listFiles();// 先列出当前文件夹下的文件及目录
        for  (File ff : arr) {
            if  (ff.isDirectory()) {// 列出的东西是目录吗
                System.out.println(ff.getName());
                openAll(ff);// 是就继续获得子文件夹,执行操作
            }  else  {
                // 不是就把文件名输出
                System.out.println(ff.getName());
            }
        }
    }
    public  static  void  main(String[] args) {
        File file =  new  File("d:/test");// 创建目录对象
        openAll(file);// 打开目录下的所有文件及文件夹
    }
}

原文地址: http://cinderella7.blog.51cto.com/7607653/1259097

© 著作权归作者所有

共有 人打赏支持
上一篇: 开始做android开发
下一篇: java set get方法
b
粉丝 0
博文 62
码字总数 33383
作品 0
南京
私信 提问
JNI知识(四)Java调用C++/C函数之Java参数类型是String

前面提到JNI主要是可以完成Java调用C++/C函数,C++/C也可以调用Java方法。先看Java调用C++/C函数。 下面先看java接口参数是String类型(入参) example: Java interface public void setNam...

yixinuestc
06/28
0
0
2018 年 Java 平台发布计划之新特性展望

过去一年 Java 发生了许多变化,其中一部分原因在于推迟了一年的 Java 9 的推出。但是,随着时间的推移,人们发现,比起 Java 9 的推出,Java 版本发布周期的变更意义更为重大。 前段时间公布...

达尔文
01/14
3.8K
7
XXL-EXCEL v1.1.1 发布,Java 对象和 Excel 转换工具

v1.1.1 新特性 1、支持设置Field水平位置,如居中、居左; 2、底层API优化,预约多Sheet操作支持; 3、空Cell导入抛错问题修复; 4、Cell数据类型识别优化,全类型支持; 5、导入时支持空Exc...

许雪里
10/24
1K
9
关于Java编程基础学习输入输出IO的问题

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/23
0
0
Java 7 的新特性一览表

官方说是 7月28日 正式发布 Java 7 ,正常的话我们应该在 7月29日 看到这个版本。很快了,就两天时间。 发布之前让我们先来看看 Java 7 都有什么新特性吧。 Java 7 的架构图: 新特性一览表:...

红薯
2011/07/27
76.3K
83

没有更多内容

加载失败,请刷新页面

加载更多

centos安装confluence全攻略

https://blog.csdn.net/qwer026/article/details/51439076

happyeveryday32
13分钟前
1
0
30 行 Javascript 代码搞定智能家居系统

本文首发于『阿里云 IoT 开发者社区』,更多精彩物联网内容欢迎前往浏览。 智能家居可谓是今年物联网的热门领域,通过智能单品和智能音箱,人们已然把『智能』两个字变成了生活的理所应当。搭...

阿里云官方博客
16分钟前
1
0
sed插入和附加文本基础使用

对于编辑器来说,在数据中增加行算是很基本的操作吧,sed有以下两个操作: 插入(insert)命令(i)会在指定行前增加一个新行 附加(append)命令(a)会在指定行后增加一个新行 还是用下面的文本来测...

woshixin
24分钟前
1
0
HIVE数据倾斜总结

在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,...

瑞查德-Jack
34分钟前
0
0
Pure-ftpd搭建FTP

12月11日任务 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 使用pure-ftpd搭建FTP服务 轻量的ftp软件 安装pure-ftpd并修改配置文件 # pure-ftpd为epel扩展库里的软件[root...

robertt15
43分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部