文件是一种特殊的存储结构。 java.io 提供 File 对象来操作文件和目录

  • 根据 文件路径 构造File对象

    • 在windows平台使用\作为路径分隔符,在Java字符串中需要用\\表示一个\。linux平台使用/作为路径分隔符
    • 绝对路径、相对路径
      . 表示当前目录,.. 表示上级目录
    相对路径:
    //假设当前目录是 c:\Docs
    File f1 = new File("sub\\javac")    绝对路径是c:\Docs\sub\javac
    File f2 = new File(".\\sub\\javac")     绝对路径是c:\Docs\sub\javac
    File f3 =  new File("..\\sub\\javac")    绝对路径是c:\sub\javac
    绝对路径
    public class IO {
      public static void main(String[] args) {
          File file = new File("/Users/ireneliu/Desktop/network-rmi");
          System.out.println(file);
      }
    }
    //输出
    /Users/ireneliu/Desktop/network-rmi
  • getPath()返回构造方法传入的路径, getAbsolutePath()返回绝对路径, getCanonicalPath()返回规范路径

    public class IO {
      public static void main(String[] args) {
          File file = new File("..");
          System.out.println(file.getPath());
          System.out.println(file.getAbsolutePath());
          try {
              System.out.println(file.getCanonicalPath());
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
    }
    //输出
    ..
    /Users/ireneliu/Desktop/thread-multi/..
    /Users/ireneliu/Desktop
  • File.separator() 得到当前平台的系统分隔符

    public class IO {
      public static void main(String[] args) {
          System.out.println(File.separator);
      }
    }
    //输出
    /
  • File对象既可以代表文件,也可以代表目录。在构造对象时,即使传入的文件、目录不存在也没有关系,在此时不进行磁盘操作,只有在调用对象的方法时,才会有磁盘操作。

    • isFile()判断是否是一个已存在的文件
    • isDirectory()判断时候是一个已存在的目录
    public class IO {
      public static void main(String[] args) {
          File file = new File("/Users/ireneliu/Desktop/thread-multi");
          System.out.println(file.isFile());
          System.out.println(file.isDirectory());
    
      }
    }
    //输出
    false
    true
  • 判断文件的权限和大小

    • boolean canRead() 是否可读
    • boolean canWrite() 是否可写
    • boolean canExecute() 是否可执行(对于目录来说,是否可执行表示能否列出它包含的文件和子目录)
    • long length() 文件字节大小 此方法需要注意,在对文件进行操作前,可先判断文件大小是否为空,避免在出现空文件的异常
  • 创建文件/创建临时文件、删除文件/删除临时文件

    创建文件、删除文件
    File file = new File("..");
    file.createNewFile();
    file.delete();
    
    创建临时文件、删除临时文件
    public class IO {
      public static void main(String[] args) {
          try {
              File file1 = File.createTempFile("irene-", ".doc");
              file1.deleteOnExit();  //JVM退出时,自动删除临时文件
              System.out.println(file1);
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
    }
    输出
    /var/folders/99/j5sp4mgx68l_bvhbxx7q0nqm0000gn/T/irene-5560752089868481670.doc

    irene-是临时文件的前缀
    .doc是临时文件的后缀
    file1.deleteOnExit() 必须在try里面,因为file1的作用范围相当于是一个局部变量,否则就超出其作用范围了。

标签: none

添加新评论