文件

  1. java.io.File类: 文件和文件目录路径的抽象表示形式, 与平台无关
  2. File能新建, 删除, 重命名文件和目录, 饭File不能访问文件内容本身. 如果需要访问文件内容本身, 则需要输入流/输出流
  3. 想要在Java程序中表示一个真实存在的文件或目录, 需要一个File对像, 但是Java程序的一个File对象, 可能没有一个真是存在的文件或目录
  4. File对象可以作为参数传递给流的构造器

File的三种创建方式

  • public File(String pathname)

以pathname为路径创建File对象, 可以是绝对路径或者相对路径, 如果pathname是相对路径, 则默认的当前路径在系统属性user.dir中存储

绝对路径: 是一个固定的路径, 从盘符开始

相对路径: 是相对于某个位置开始

File file1 = new File("hello.txt");//相对路径,相对于当前module
File file2 = new File("F:\\TXT\\hello.txt");//绝对路径
System.out.println(file1);//hello.txt
System.out.println(file2);//F:\TXT\hello.txt
  • public File(String parent, String Child)

以parent为父路径, child为子路径创建File对象

File file3 = new File("F:\\TXT","world.txt");
System.out.println(file3);
  • public File(File parent, String child)

根据一个父File对象和子文件路径创建File对象

File file4 = new File(file3,"hello.txt");
System.out.println(file4);

路径分隔符

  • 路径中的每级目录之间用一个路径分隔符隔开

  • 路径分隔符和系统有关:

    • Windows和DOS系统默认使用**" \ "**来表示
    • UNIX和URL使用**" / "**来表示
  • java程序支持跨平台运行, 因此路径分隔符要慎用

  • 为了解决这个隐患, FIle类提供了一个常量

    public static final String separator . 根据操作系统, 动态的提供分隔符

File file = new File("d:"+ File.separator + "atguigu" + File.separator + "info.txt");

File方法

  • public String getAbsolutePath() 获取绝对路径
File file1 = new File("hello.txt");
File file2 = new File("F:\\TXT\\hello.txt");//绝对路径

System.out.println(file1.getAbsolutePath());//E:\homework\day08\hello.txt
System.out.println(file2.getAbsolutePath());//F:\TXT\hello.txt
  • public String getPath() 获取路径
System.out.println(file1.getPath());//hello.txt
System.out.println(file2.getPath());//F:\TXT\hello.txt
  • public String getName() 获取名称
System.out.println(file1.getName());//hello.txt
System.out.println(file2.getName());//hello.txt
  • public String getParent() 获取上层文件目录路径, 若无, 返回null
System.out.println(file1.getParent());//null
System.out.println(file2.getParent());//F:\TXT
  • public long length() 获取文件长度, 即字节数, 不能获取目录的长度
System.out.println(file1.length());//11
System.out.println(file2.length());//0
  • public long lastModifird() 获取最后一次的修改时间, 毫秒数
System.out.println(new Date(file1.lastModified()));//Sat May 15 19:30:04 CST 2021
System.out.println(file2.lastModified());//0
  • public String[] list() 获取指定目录下的所有文件或者文件目录名称数组
File file1 = new File("E:\\homework");
String[] list = file1.list();
for (String s : list){
    System.out.print(s+" ");//.idea day08 homework.iml jdbc.properties out src
}
  • public File[] listFiles() 获取指定目录下的所有文件或者文件目录file数组
File[] files = file1.listFiles();
for (File f : files){
    System.out.println(f);
    /*
    E:\homework\.idea
    E:\homework\day08
    E:\homework\homework.iml
    E:\homework\jdbc.properties
    E:\homework\out
    E:\homework\src
     */
}
  • renameTo

要想保证是成功的
需要file1在硬盘中是存在的, file2不能在硬盘中存在

File file1 = new File("hello.txt");
File file2 = new File("F:\\TXT\\hello.txt");
boolean b = file1.renameTo(file2);
System.out.println(b);//true
  • public boolean isDirectory() 判断是否是文件目录
File file1 = new File("hello.txt");
System.out.println(file1.isDirectory());//false
  • public boolean isFile() 判断是否是文件
System.out.println(file1.isFile());//true
  • public boolean exists() 判断是否存在
System.out.println(file1.exists());//true
  • public boolean canRead() 判断是否可读
System.out.println(file1.canRead());//true
  • public boolean canWrite() 判断是否可写
System.out.println(file1.canWrite());//true
  • public boolean isHidden() 判断是否隐藏
System.out.println(file1.isHidden());//false

File的创建和删除

  • public boolean mkdir() 创建文件目录, 如果此文件目录存在, 就不创建了, 如果此文件目录的上层目录不存在, 也不创建
  • public boolean mkdirs() 创建文件目录, 如果上层文件目录不存在, 一并创建
File file1 = new File("hi~.txt");
boolean mkdir = file1.mkdir();
if (mkdir){
    System.out.println("创建成功");
}

[注意] 如果创建文件或者文件目录没有写盘符路径, 那么默认在项目路径下

  • public boolean createNewFile() 创建文件, 若文件存在, 则不创建, 返回false
file1.createNewFile();
  • public boolean delete() 删除文件或文件夹
file1.delete();

[注意] Java的删除不走回收站, 要删除一个文件目录, 请注意该文件目录内不能包含文件或者文件目录

File file1 = new File("hi.txt");
if (!file1.exists()){
    file1.createNewFile();
    System.out.println("创建成功");
}else {
    file1.delete();
    System.out.println("删除成功");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值