IO
文件是一种特殊的存储结构。 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的作用范围相当于是一个局部变量,否则就超出其作用范围了。