文件是一种特殊的存储结构。 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

添加新评论