File类

File类的设计主要目的是为了在Java中实现对文件进行增加、删除和访问文件路径等方法,但File类中不具有对文件内部信息进行增删改查的功能。

File类中的方法

研究File类中的方法有助于我们更熟练的掌握File类的使用。

创建File对象

创建File对象有多种方法,但创建出的对象都是同一个
File file = new File(“pathname”);
具体方法如下:

    //创建一个File对象File file = new File("a.txt");File file1 = new File("./a.txt");File file2 = new File("C:/Users/HERUI/IdeaProjects/Week_6/a.txt");

以上三种写法创建的对象都是同一个文件

创建文件

  • 在Flies类中创建文件使用createNewFile()方法
  • 使用createNewFile()方法创建一个文件,若有同名文件则不会创建也不会覆盖
  • 为了避免出现该类异常我们选择使用try-catch来捕获异常,或用throws抛出异常
    创建文件:
     //创建一个File对象File file = new File("a.txt");//使用createNewFile()方法创建一个文件,若有同名文件则不会创建也不会覆盖,// 为避免出现该类异常使用try-catch来捕获异常,或用throws抛出异常System.out.println("-----创建文件-----");try {if (!file.exists()) {file.createNewFile();} else {System.out.println("文件已存在");}} catch (IOException e) {e.printStackTrace();}

创建文件夹

  • 创建文件夹使用mkdir()方法,具体使用方法类似createNewFile()方法
  • 使用mkdirs()方法可以创建多层嵌套文件夹,需要在创建对象时就将多层嵌套文件夹目录写清楚

创建文件夹:

//使用mkdir()方法创建文件夹File file3 = new File("C:/Users/HERUI/IdeaProjects/Week_6/src/B");System.out.println("-----创建文件夹-----");if (!file3.exists()) {System.out.println("文件夹创建完成 " );file3.mkdir();} else {System.out.println("文件夹已存在 " );}//使用mkdirs()方法创建多层嵌套文件夹File file4 = new File("C:/Users/HERUI/IdeaProjects/Week_6/a/b/c");System.out.println("-----创建多层嵌套文件夹-----");if (!file4.exists()) {file4.mkdirs();System.out.println("多层嵌套文件夹创建完成 ");} else {System.out.println("多层嵌套文件夹已存在 ");}

获取文件名

//通过getName()方法获取文件名字System.out.println("-----文件名-----");String name = file.getName();System.out.println(name);

获取文件长度

//通过length()方法获取文件长度System.out.println("-----文件长度-----");long length = file.length();long length1 = file1.length();System.out.println(length);System.out.println(length1);

检测文件可读可写性

  • 通过canRead()、canWrite()方法分别检测文件可读性和可写性
  • 方法返回boolean值
//通过canRead()、canWrite()方法检测文件可读写性System.out.println("-----可读写性-----");boolean read = file.canRead();System.out.println("是否可读?" + read);boolean write = file.canWrite();System.out.println("是否可写?" + write);

检测文件可执行性

  • 通过canExcute()方法检测文件的可执行性
  • 输出boolean值,如果对文件的读取访问被拒绝,则此方法将引发SecurityException
//通过canExcute()方法检测文件的可执行性,输出boolean值,如果对文件的读取访问被拒绝,则此方法将引发SecurityExceptionSystem.out.println("-----文件能否被执行-----");boolean excute = file1.canExecute();if (excute) {System.out.println("Excuteable");} else {System.out.println("Not Excuteable");}

获取文件路径

File类中有三种获取路径的方式,分别是getPath、getAbsolutePath、getCanonicalPath

比较三种获取路径方式的区别:

  1. getPath:直接返回构造时的参数
  2. getAbsolutePath:返回文件路径+构造时的参数
  3. getCanonicalPath:返回文件的绝对路径

此处我们使用创建文件时创建的file和file1两个文件进行比较三种方法输出的区别:

//创建一个File对象File file = new File("a.txt");File file1 = new File("./a.txt");//比较getPath、getAbsolutePath、getCanonicalPath三种获取路径方式的区别//getPath:直接返回构造时的参数//getAbsolutePath:返回文件路径+构造时的参数//getCanonicalPath:返回文件的绝对路径System.out.println("-----三种获取路径方式的比较-----");System.out.println("getPath1:" + file.getPath());System.out.println("getPath2:" + file1.getPath());System.out.println("getAbsolutePath1:" + file.getAbsolutePath());System.out.println("getAbsolutePath2:" + file1.getAbsolutePath());System.out.println("getCanonicalPath1:" + file.getCanonicalPath());System.out.println("getCanonicalPath2:" + file1.getCanonicalPath());

输出结果图:

由上图可以看到使用getCanonicalPath方法输出的绝对路径指向的两个对象都是一个文件,但getAbsolutePath方法输出时对象路径后跟的是构造时创建对象写进去的参数,由此可见使用getCanonicalPath方法返回的路径才是文件真正对应的绝对路径

File类中的compareTo()方法

  • compareTo()方法会逐字比较两个对象对应的字符串长度,当比较值不同时输出ASCII码的差值
  • 在File中使用compareTo()方法时,进行比较的是getPath()方法获取到的值
  • 所以即便是同一个文件,只要创建对象时的构造参数不同,compareTo()方法比较的结果也不为0

这里我们同样使用创建文件时创建的三个指向同一个文件不同的对象进行比较:

//创建一个File对象File file = new File("a.txt");File file1 = new File("./a.txt");File file2 = new File("C:/Users/HERUI/IdeaProjects/Week_6/a.txt");//使用compareTo方法进行比较
System.out.println("-----compareTo()方法比较-----");System.out.println(file.compareTo(file));System.out.println(file.compareTo(file1));System.out.println(file.compareTo(file2));

输出结果:

由上图可知,虽然三个对象指向的都是同一个文件,但是进行比较的是使用getPath()方法获取的内容所以输出结果为getPath()方法进行比较的结果。
如果我们想更准确的确定对象指向的是否是同一个文件,我们需要在比较时使用getCanonicalPath方法,使用对象的绝对路径进行比较
具体如下:

//创建一个File对象File file = new File("a.txt");File file1 = new File("./a.txt");File file2 = new File("C:/Users/HERUI/IdeaProjects/Week_6/a.txt");//使用compareTo方法进行比较System.out.println("-----直接使用compareTo()方法比较-----");System.out.println(file.compareTo(file));System.out.println(file.compareTo(file1));System.out.println(file.compareTo(file2));System.out.println("-----使用getCanonicalPath后使用compareTo()方法比较-----");System.out.println(file.getCanonicalPath().compareTo(file1.getCanonicalPath()));System.out.println(file.getCanonicalPath().compareTo(file2.getCanonicalPath()));

此时的比较结果如下:

由上图可知:因为对象指向的文件路径完全相同,所以使用getCanonicalPath后再使用compareTo方法比较得到的值都为0

删除文件

//删除文件file.delete();

更改文件名

使用renameTo()方法可以将文件更名并放到相应的文件路径下
该方法返回一个boolean值,成功修改文件名返回true,若不存在文件则无法修改返回false
具体如下:

//使用renameTo()方法,更改文件名到相应的路径下File file5 = new File("x.txt");File file6 = new File("y.txt");boolean b = file5.renameTo(file6);System.out.println(b);

总结:

本文章列出了File类中常用的几个方法,在File类中还有大量的其他方法,大部分使用都较为简单,等待你的发现。

Java学习——File类相关推荐

  1. 手把手带你入门Java中File类

    零基础学习Java之File类 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 代码示例 判断功能 代码示例 创建和删除功能 代码示例 目录遍历功能 代码示例 概述 要学习Ja ...

  2. java:IO流(缓冲流、对象流、控制台IO、转换流、java.io.File 类 )

    目录 一.IO 流的结构体系 二.缓冲流:BufferedInputStream & BufferedOutputStream 三.对象流:ObjectInputStream & Ob ...

  3. Java之File类

    一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...

  4. java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 返回绝对路径,但不会处理"."和".."的情况 ...

  5. java中的path类_详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理".&qu ...

  6. 33.JAVA编程思想——JAVA IO File类

    33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...

  7. 利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

    2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm ...

  8. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  9. JAVA中File类的getPath()、getAbsolutePath()、getCanonical()

    1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理"."和"-&quo ...

最新文章

  1. mac 下homebrew 的安装和卸载
  2. mysql表的类型_浅谈MySQL表类型
  3. undefined: resolver.BuildOption undefined: resolver.ResolveNowOption 报错的解决办法
  4. Python 全栈开发基础
  5. python 创建目录_第二天:Python中目录及文件操作
  6. Picocli 2.0:事半功倍
  7. 数据库工作笔记011---Centos7.3下切换mysql数据库的存储位置_挂盘_目录挂载_挂载某个目录到某个设备下
  8. FAQ from CSDN
  9. 团队作业4——beta阶段冲刺4
  10. Excel常用函数大全
  11. CHUA 返回的矢量的长度为 3,但初始条件矢量的长度为 4。CHUA 返回的矢量和初始条件矢量的元素数目必须相同。
  12. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之原型模式
  13. win10更新(windows update)后,打印蓝屏解决方法
  14. react二级路由配置正确不显示页面的问题解决
  15. 关于Spring MVC 文件大小超过限制后浏览器无响应解决方案
  16. android opengl版本太低,安卓模拟器opengl_安卓模拟器无法安装“系统opengl版本过低”的通用解决方法_安卓模拟器通用版_通用安卓模拟器...
  17. Cypher查询语言
  18. 200 PORT command successful. Consider using PASV / Linux 部署vsftp不能正常访问
  19. 【每日一篇】NIO学习【二】什么是Buffer
  20. 【H3C模拟器】基于端口VLAN的交换机配置实验(不同vlan互通)

热门文章

  1. 利用反向代理服务器,加快国内对国外主机的访问
  2. 【汇编语言】贪吃蛇游戏(一)
  3. 运营可能是一种思维方式
  4. SHELL脚本下获取文件时间转换时间戳,使用时间戳计算日期差
  5. sqlserver中计算日期差
  6. 不用CorelDraw怎么编辑CDR文件
  7. 华为电脑怎么把虚拟化打开_【解决方案】华为虚拟化解决方案
  8. 深入浅出Apache DolphinScheduler
  9. 使用nodebb搭建一个论坛
  10. python 监控键盘输入_python 监控键盘输入