IO学习
学习法则:当子类复写父类方法时,会根据实例化子类的不同,同一方法可以完成不同的功能。
File类
File类是在整个java.io包之中唯一一个与文件本身操作有关的类,文件本身操作指的是文件的创建、删除等,但是如果要进行File类操作那么必须设置好要操作的文件或文件夹的路径,使用如下构造方法。
构造方法
public File(String pathname),传入完整的路径,WEB开发此方式比较好用
public File(File parent, String child),传入父路径和子路径。
范例:基本的文件操作
- 创建新的文件
public boolean createFile() throws IOException;
- 删除文件
public boolean delete(); 判断文件是否存在
public boolean exists();
public class TestDemo{ public static void main(String[] args) throws Exception { File file = new File("D:\\demo.txt"); if(file.exists()){ file.delete(); } else{ file.createFile(); } }
本程序依然存在如下几个问题:
- Java的最大特征是可移植性,分隔符不同,一般在windows开发,最后部署在Linux之中;
public static final String separator
- 在程序执行完之后文件并不会立刻删除或者是创建,存在有一定的延迟,因为Java程序是通过JVM间接调用系统函数实现的文件操作。
- 如果在进行文件创建的时候,如果有目录,则需要先创建文件目录之后才可以创建文件。
- 找到父路径:
public File getParentFile(); - 创建目录:
public boolean mkdirs();
- 找到父路径:
除了以上的一些文件操作,还有一些取得文件信息的方法。
- 判断路径是否是文件
public boolean isFile();
- 判断路径是否是文件夹
public boolean isDirectory(); 最后一次修改日期
public long lastModified();
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") .format(new Date(file.lastModified()));
- 取得文件大小
public long length();
- 修改文件名称
public boolean renameTo(File dest);
列出目录中的所有文件内容
列出目录内容
public File[] listFiles();
File file = new File("D:" + File.separator + "testjava"); if(file.exists() && file.isDirectory()) { File[] result = file.listFiles(); for(int x = 0; x < result.length; x++) { System.out.println(result[x]); } }
但是此时列出的只是当前目录的文件内容。
范例:列出一个目录之中的所有文件(包括所有子目录的文件)
public static void print(File file) {
if(file.exists() && file.isDirectory()) {
File[] result = file.listFiles();
if(result != null) { //有些文件我们并没有权限打开
for(int x = 0; x < result.length; x++) {
print(result);
}
}
}
System.out.println(file);
}