欢迎光临散文网 会员登陆 & 注册

java File类用法

2022-07-13 21:01 作者:虚云幻仙  | 我要投稿

/**
* 测试File类
*/

public class TestFile {
   public static void main(String[] args) {
       System.out.println(System.getProperty("user.dir"));
       //返回当前java项目的路径 返回String
       File f1 = new File("C:/abc/def/a.txt");
       //new File()传path路径传参给构造器 生成File对象 这里的路径不一定真实存在 目录通过/分割 也可以用\\   一个\是转义符   \\代表\
       File f2 = new File("C:/abc/def");
       //File对象既可以指代任何种类的文件也可以指代目录 这里的路径是绝对路径
       File f3 = new File("a.txt");
       //路径没有从盘符开始 是相对路径 默认路径是user.dir
       File f4 = new File(System.getProperty("user.dir"));
       //将当前java项目的路径传参给构造器 f4指向当前项目目录
       System.out.println(f1.exists()+"判断f1指代的文件或者路径是否存在 结果false ");
       //.exists()方法无法分辨目标是目录还是文件 如果想查名为a.txt的文件夹是否存在 遇到有a.txt文件但没有a.txt文件夹时也会返回true
       System.out.println(f1.isDirectory()+"判断f1是否为目录 结果false 如果路径invalid无效/不存在也会返回false");
       System.out.println(f2.isFile()+"判断f2是否为文件 结果false 如果路径invalid无效/不存在也会返回false");
       try {
           f1.createNewFile();
           //.createNewFile()创建f1所指的File "C:/abc/def/a.txt" 该方法throws IOException 需要try/catch处理或者throws抛出
           //创建文件指的是a.txt 如果a.txt之前的路径或某一层路径不存在则抛出IOException f1指代的是a.txt 创建文件不负责创建中间路径

       } catch (IOException e) {
           throw new RuntimeException(e);
       }
       /*
       Exception in thread "main" java.lang.RuntimeException: java.io.IOException: 系统找不到指定的路径。
          at TestFile.main(TestFile.java:20)
       Caused by: java.io.IOException: 系统找不到指定的路径。
           at java.io.WinNTFileSystem.createFileExclusively(Native Method)
           at java.io.File.createNewFile(File.java:1023)
           at TestFile.main(TestFile.java:17)

           RuntimeException运行时异常
           (TestFile.java:20行) throw new RuntimeException(e); 运行时异常中止了进程
           Exclusively唯一地 Native本地的
        */

       boolean success = f2.mkdir();
       //.mkdir() make directory 创建目录  "C:/abc/def" 创建目录指的是最后一层def目录 如果def之前的目录缺失或者某一层缺失则无法创建 返回false 如果创建成功返回true
       //.mkdir()只负责创建指向的目录 不会创建过程中的目录   目录结构中有一个不存在则不会创建整个目录树

       System.out.println(success+"返回false 因为中间路径 abc不存在");
       success = f1.mkdirs();
       //.mkdirs()创建目录 如果过程中目录缺失会一并创建  "C:/abc/def/a.txt" 使用创建目录的方法会将a.txt当做目录/文件夹的名字创建 同样返回boolean表示创建操作执行与否
       System.out.println(success+"返回true 在C盘创建了 abc/def/a.txt/    的目录");
       f1.delete();
       //删除文件/目录 执行后无法撤销  "C:/abc/def/a.txt" 只会删除a.txt 不会删除新建的abc/def/
       try {
           f1.createNewFile();
           //有了中间目录 .createNewFile() 方法创建文件成功
       } catch (IOException e) {
           throw new RuntimeException(e);
       }
       System.out.println(f1.lastModified()+"最后修改时间 返回long 结果为1657629701563");
       //modify修改 .lastModified 返回毫秒long类型 可以通过  new Date(f1.lastModified())转换成Date对象打印来显示修改日期
       System.out.println(f1.getPath()+"得到路径 返回String 结果为C:\\abc\\def\\a.txt  路径包含f1指代的文件名/目录名");
       System.out.println(f1.getName()+"得到文件名/目录名 结果为a.txt");
       System.out.println(f1.length()+"得到文件大小 结果为0 创建了文件但是没有写入内容");

       success = f2.delete();
       //删除同样返回执行结果true/false
       System.out.println(success+"结果为false 想删除C:/abc/def但是C:/abc/def/目录下存在文件a.txt 删除未执行");
       f1.delete();
       f2.delete();
       //从末端往前依次删除 成功
       try {
           f2.createNewFile();
           //C:/abc/def    .createNewFile()将def当做文件来创建 def不再是目录
       } catch (IOException e) {
           throw new RuntimeException(e);
       }

   }
}

class TestFileCreate{
   public static void main(String[] args) {

       File f5 = new File("C:/abc/def/h/a.jpg");
       File dir = f5.getParentFile();
       //.getParentFile() 返回f5的父目录  f5是a.jpg  父目录是h/
       System.out.println(dir.getPath()+"结果为C:\\abc\\def\\h");
       boolean exist = f5.exists();
       if (exist){
           f5.delete();
           //判断a.jpg是否存在 存在则删除
       }else {
           dir.mkdirs();
           //方法中会判断目录是否存在,存在目录则返回false 不存在则创建父目录及目录树
           //由于之前创建了def文件 .mkdirs()方法无法分辨文件和目录 在def文件下创建子目录h失败 删除def文件后可正常创建目录树

           boolean success;
           try {
               success = f5.createNewFile();
               //创建文件也会返回执行结果true或false
           } catch (IOException e) {
               throw new RuntimeException(e);
           }
           System.out.println(success+"结果为true");

           f5.renameTo(new File("C:/abc/def/h/a.png"));
           //.renameTo(File dest)重命名文件 需要传参File对象
       }
   }
}

java File类用法的评论 (共 条)

分享到微博请遵守国家法律