JDK之java.io.File类 超~详细解析

package com.LQBZ.JDK.io;

import java.io.*;
import java.net.URI;
import java.util.Arrays;

//提示:以下代码建议分开来,一步一步的探索执行
public class ClassFileTest {
    public static void main(String[] args) throws IOException {
        //实例化一个File类,File类的构造器一共有4种,具体见API.
        //路径名字自己找一个合适的就好
        File file = new File("G:\\Users\\Administrator\\workspace\\test\\src\\com\\hello2.java");
        File file1 = new File("G:\\Users\\Administrator\\workspace\\test\\src\\com\\hello.java");

//      //输出文件的目录,相当于file.toString().
//      System.out.println(file);

//      //表示两个目录之间的分隔符,跟操作系统有关.
//      System.out.println(File.pathSeparator);

//      //表示一个目录中的分隔符,同样跟操作系统有关.
//      System.out.println(File.separator);

//      //表示文件是否可执行.
//      System.out.println(file.canExecute());

//      //表示文件是否可读.
//      System.out.println(file.canRead());

//      //表示文件是否可写.
//      System.out.println(file.canWrite());

//      //用来比较两个文件(目录)的路径是否一致,返回0为一致.
//      System.out.println(file.compareTo(file1));

//      //创建文件,返回值为boolean类型
//      file.createNewFile();

//      //删除文件,返回值为boolean类型
//      file.delete();

//      //验证文件是否存在.
//      System.out.println(file.exists());

//      //返回文件的与构造器参数有关的绝对路径(字符串).
//      System.out.println(file.getAbsolutePath());

//      //返回文件的与构造器参数有关的绝对路径(File类型)
//      System.out.println(file.getAbsoluteFile());

//      //返回文件的全路径(字符串).
//      System.out.println(file.getCanonicalPath());

//      //返回文件的全路径(File类型)
//      System.out.println(file.getCanonicalFile());

//      //返回抽象路径名所指定的分区中未分配的字节数.
//      System.out.println(file.getFreeSpace());

//      //返回特指的文件名.
//      System.out.println(file.getName());

//      //返回上一层目录(父目录).
//      System.out.println(file.getParent());

//      //原理与上面那个大致相同
//      System.out.println(file.getParentFile());

//      //返回所在分区的总大小
//      System.out.println(file.getTotalSpace());

//      //返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
//      System.out.println(file.getUsableSpace());

//      //判断路径是否为绝对路径
//      System.out.println(file.isAbsolute());

//      //判断所指文件是否为目录
//      System.out.println(file.isDirectory());

//      //判断所指文件是否为标准文件.
//      System.out.println(file.isFile());

//      //判断文件是否为隐藏文件
//      System.out.println(file.isHidden());

//      //返回文件上一次被修改时间.不是标准的日期格式.
//      System.out.println(file.lastModified());

//      //返回文件的长度
//      System.out.println(file.length());

//      //超重要!!!!返回指定 "目录" 下所有的文件和目录(不遍历)
//      System.out.println(Arrays.toString(file.list()));

//      //超级超级超级重要!!!!!返回指定"目录"下所有有特定形式的文件!!!!!!
//      System.out.println(Arrays.toString(file.list(new FilenameFilter() {
//          String suffix = ".java";
//          @Override
//          public boolean accept(File dir, String name) {
//              return name.endsWith(suffix);
//          }
//      })));

//      //以下两个同以上两个差不多,区别还是返回类型是String还是File的问题
//      //这里举的例子是"返回所有文件属性是标准文件".还是蛮吊.
//      //还有一个小区别:以上两个list参数没有FileFilter类型(见API)
//      //也就是说按照目标是文件还是目录返回的只能用listFiles()方法(不是按照扩展名)
//      System.out.println(Arrays.toString(file.listFiles()));
//      System.out.println(Arrays.toString(file.listFiles(new FileFilter() {
//          @Override
//          public boolean accept(File pathname) {
//              return pathname.isFile();
//          }
//      })));

//      //listRoots()是个静态方法,用类名直接调用,返回的是计算机对应系统的所有根路径.
//      System.out.println(Arrays.toString(File.listRoots()));

//      //createNewFile()创建的是文件,而下面的mkdir()创建的是目录.
//      //mkdirs()是连带创建所有路径中不存在的包
//      System.out.println(file.mkdir());

//      //重命名指定文件
//      System.out.println(file.renameTo(new File("G:\\Users\\Administrator\\workspace\\test\\src\\com\\hello21.java")));

//      //好像不是很可靠的设置文件执行权限的命令
//      System.out.println(file.setExecutable(false));
//      System.out.println(file.canExecute());

//      //同样十分蹩脚的修改最后修改时间的函数
//      System.out.println(file1.lastModified());
//      System.out.println(file1.setLastModified(1487329625258));

//      //最后的几个设置可读可写什么的函数就不写了

//      //这里!相当!十分!非常!特别!极其重要的函数!!!把文件路径转换成URL地址!!
//      //非常注意!!!转换用的类是"URI"而不是"URL"!!!这是因为URL类不会处理应该被转义的字符
//      //具体见百度
//      URI url = file.toURI();
//      System.out.println(url);
    }
}


/**
 * 总结:
 * File类的主要功能是与操作系统的文件结构密切相关,它是基于操作系统的,也就是说
 * Windows系列和Linux系列的操作系统的文件结构和表示方法都有一些不同,比如上面
 * 提到过的路径分隔符两者就有所不同
 * 这些东西在哪会用到呢?打个比方,你成功的黑到了一台电脑里面(并不鼓励),你要想在
 * 别人的电脑上动点什么手脚,以上的命令显然是必不可少的吧?所以不管是什么,先想到了
 * 或者是提前有这个需求了,学起来就会感觉特别的有针对性.(我是不是暴露了什么:-D)
 */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值