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的作用范围相当于是一个局部变量,否则就超出其作用范围了。