39、File文件的基本操作

发布时间:2024-12-19 06:29

学习后期软件的基本操作 #生活知识# #摄影技巧# #摄影器材#

学习目标:

1、了解文件的操作类File

2、掌握使用File类操作文件

学习过程:

一、File类简介

File类不但代表文件和目录的双重含义,还表示一个刚新建于内存中尚未同步去硬盘的文件或目录。File类的作用描述了文件本身的属性,包括用来获取或处理与磁盘文件相关的信息,例如大小、权限、生成时间、最后修改时间和目录路径等等。此外,浏览子目录层次结构也是经常做的操作。尽管File类的实例对象并不打开文件,也不提供任何文件内容的处理功能。但是其他java.io包中的类通常都需要使用File对象来指定要操作的文件或目录。

二、注意问题

由于File需要和操作系统的文件打交道,而Window和Linux的文件系统差异性比较大,所以我们首先要先讲解一下两个注意问题:

1、分割符

Unix/Linux在路径名中分隔符是下斜杠“/”(位于键盘的下端),比如:

 /usr/java/jdk7/bin/java.bin

在Windows系统中沿用Dos系统使用的路径分隔符上斜杠“”(位于键盘的上端)。不过Java编程时很快就会发现这样定义字符串路径是行不通的:

String path=”C:javajdkinjava.exe”;       //报错

上斜杠“”在java中是转移字符的开始标记,因此你需要进行必要的转义操作:

String path=”C:javajdkinjava.exe”;   //正确

对于上面问题还有很多解决方法,可以统一使用Java约定是用UNIX和URL风格的斜线来作路径分隔符,这样的写法经过测试,在window下面也是可以正常运行的:

String path=”C:/java/jdk/bin/java.exe”;      //正确

File类还提供了一个属性File.separator代替分隔符,这个也可以解决问题。

2、相对路径和绝对路径

绝对路径:是window系统中指的是从盘符开始的路径,linux系统中指的是以"/"开头——代表根目录的路。

像一下这些路径就是绝对路径

C:javajdkinjava.exe

/usr/hello.java

相对路径,顾名思义,相对路径就是相对于当前文件的路径。相对路径的真实路径要根据当前所在目录决定的,如:当前所在的路径是c:/java,那么路径hello/abc.txt路径就表示在c:/java/hello/abc.txt。相比绝对路径而言,相对路径灵活而且效率更高。相对路径还有两个特殊符号:

"./":代表目前所在的目录。

"../":代表上一层目录。

三、代码示例

1、构造方法。只需要写上路径,既可以指向文件也可以指向目录。代码如下:

1

2

3

4

     //目录

    File path=new File("g:\\java\\abc\\cba\\dfd");

   //文件

    File file=new File("g:\\java//hello.java");

你可以去相应的目录下,查看是否建立成功。

2、建立目录和文件。建立目录和创建文件使用方法是不同的,其中建立目录方法有两个:mkdirs和mkdir。mkdir要求父级目录必须存在,否则会建立失败,而mkdirs会建立所有的目录。不管是建立文件还是目录最好都先判断是否有其权限,还得判断原文件是否存在,否则会覆盖原文件。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//新建目录和新建文件方法

   //System.out.println(path.exists());

   if(!path.exists()){

       //mk make dir

     if(path.mkdirs()){

       System.out.println("建立成功");

     }else{

       System.out.println("建立失败");

     }

   }

   //新建文件

   if(!file.exists()){

    try {

        file.createNewFile();

    } catch (IOException e) {

        e.printStackTrace();

    }

   }

3、其他操作。我们可以通过File类读取文件的基本属性,还可以删除文件,重命名文件等操作。具体大家可以运行下面代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

System.out.println("是否可读:"+file.canRead());

System.out.println("是否可写:"+file.canWrite());

System.out.println("是否可执行:"+file.canExecute());

System.out.println("是否是目录:"+path.isDirectory());

System.out.println("是否是文件:"+path.isFile());

System.out.println("是否隐藏:"+file.isHidden());

/System.out.println("删除文件:"+file.delete());

System.out.println("删除目录:"+path.delete());

System.out.println("获得文件的完整路径:"+file.getAbsolutePath());

file.renameTo(new File("d://abc.txt"));

//浏览目录

File javaFile=new File("g://java");

File files[]= javaFile.listFiles();

System.out.println("文件名称\t修改时间\t类型\t大小");

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

    File f=files[i];

    Date date=new Date(f.lastModified());

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

    String ftype=f.isDirectory()?"目录":"文件";

    System.out.println(f.getName()+"\t"+sdf.format(date)+

        "\t"+ftype+"\t"+f.length());

}

四、实例

把目录hello下所有文件后缀名是txt的文件全部删除。 提示可以使用递归,实现代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

 public class Exe6 {

    public static void main(String[] args) {

        Exe6 exe6 = new Exe6();

        exe6.deleteFile("e://hello");

    }

    public void deleteFile(String path) {

        File file = new File(path);

        File[] files = file.listFiles();

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

            File temp = files[i];

            //如果是文件才判定是否要删除

            if (temp.isFile()) {

                // 文件后缀名是txt

                if (temp.getName().endsWith("txt")) {

                    System.out.println(temp.getName() + "删了");

                    temp.delete();

                }

            }else{

                //目录 ,再进入目录删除,

                //获得目录的路径

                String son=path+"//"+temp.getName();

                //递归调用

                deleteFile(son);

            }

        }

    }

}

网址:39、File文件的基本操作 https://www.yuejiaxmz.com/news/view/515136

相关内容

IE type=file上传文件浏览弹窗问题
导入keras训练好的模型报错解决OSError: Unable to open file (unable to open file: name = ‘model
HTML input type=file文件选择表单元素二三事 « 张鑫旭
如今人们手头设备越来越多,各个独立的文件系统给日常使用带来了诸多不便,本文将通过 File Explorer 给出用手机或平板进行跨设备高效率传输和管理文件的解决方案。
Linux操作系统基础知识
Matlab基本操作函数
用R进行文件系统管理
修改 input type=file 的样式的最简单方法
Linux下快速删除大量文件/文件夹方法
维修工的基本操作

随便看看