js判断file是否为空_IO--File对象
在计算机系统中,⽂件是⾮常重要的存储⽅式。Java的标准库java.io提供了File对象来操作⽂件和⽬录。
要构造⼀个File对象,需要传⼊⽂件路径:
import java.io.*;
Run
构造File对象时,既可以传⼊绝对路径,也可以传⼊相对路径。绝对路径是以根⽬录开头的完整路径,例如:
File f = new File("");
despicable注意Windows平台使⽤作为路径分隔符,在Java字符串中需要⽤表⽰⼀个。Linux平台使⽤/作为路径分隔符:
File f = new File("/usr/bin/javac");
传⼊相对路径时,相对路径前⾯加上当前⽬录就是绝对路径:
// 假设当前⽬录是C:Docs
File f1 = new File("subjavac"); // 绝对路径是C:Docssubjavac
fake newsFile f3 = new File(".subjavac"); // 绝对路径是C:Docssubjavac
File f3 = new File("..subjavac"); // 绝对路径是C:subjavac
可以⽤.表⽰当前⽬录,..表⽰上级⽬录。
File对象有3种形式表⽰的路径,⼀种是getPath(),返回构造⽅法传⼊的路径,⼀种是getAbsolutePath(),返回绝对路径,⼀种是getCanonicalPath,它和绝对路径类似,但是返回的是规范路径。
什么是规范路径?我们看以下代码:
import java.io.*;
Run
绝对路径可以表⽰成,⽽规范路径就是把.和..转换成标准的绝对路径后的路
径:。
因为Windows和Linux的路径分隔符不同,File对象有⼀个静态变量⽤于表⽰当前平台的系统分隔符:
System.out.println(File.parator); // 根据当前平台打印""或"/"
⽂件和⽬录
File对象既可以表⽰⽂件,也可以表⽰⽬录。特别要注意的是,构造⼀个File对象,即使传⼊的⽂件或⽬录不存在,代码也不会出错,因为构造⼀个File对象,并不会导致任何磁盘操作。只有当我们调⽤File对象的某些⽅法的时候,才真正进⾏磁盘操作。
例如,调⽤isFile(),判断该File对象是否是⼀个已存在的⽂件,调⽤isDirectory(),判断该File对象是否是⼀个已存在的⽬录:
import java.io.*;
Run
⽤File对象获取到⼀个⽂件时,还可以进⼀步判断⽂件的权限和⼤⼩:
boolean canRead():是否可读;
boolean canWrite():是否可写;
amaiboolean canExecute():是否可执⾏;
long length():⽂件字节⼤⼩。
对⽬录⽽⾔,是否可执⾏表⽰能否列出它包含的⽂件和⼦⽬录。
创建和删除⽂件
当File对象表⽰⼀个⽂件时,可以通过createNewFile()创建⼀个新⽂件,⽤delete()删除该⽂件:
File file = new File("/path/to/file");
if (ateNewFile()) {
// ⽂件创建成功:
// TODO:
puppy millif (file.delete()) {
// 删除⽂件成功:
}
}建模方法
有些时候,程序需要读写⼀些临时⽂件,File对象提供了createTempFile()来创建⼀个临时⽂件,以及deleteOnExit()在JVM退出时⾃动删除该⽂件。
import java.io.*;
Run
遍历⽂件和⽬录
当File对象表⽰⼀个⽬录时,可以使⽤list()和listFiles()列出⽬录下的⽂件和⼦⽬录名。listFiles()提供了⼀系列重载⽅法,可以过滤不想要的⽂件和⽬录:
import java.io.*;
Run
和⽂件操作类似,File对象如果表⽰⼀个⽬录,可以通过以下⽅法创建和删除⽬录:
boolean mkdir():创建当前File对象表⽰的⽬录;
boolean mkdirs():创建当前File对象表⽰的⽬录,并在必要时将不存在的⽗⽬录也创建出来;
boolean delete():删除当前File对象表⽰的⽬录,当前⽬录必须为空才能删除成功。
Path
Java标准库还提供了⼀个Path对象,它位于java.nio.file包。Path对象和File对象类似,但操作更加简单:
earthhourimport java.io.*;
import java.nio.file.*;
Run
如果需要对⽬录进⾏复杂的拼接、遍历等操作,使⽤Path对象更⽅便。
练习
请利⽤File对象列出指定⽬录下的所有⼦⽬录和⽂件,并按层次打印。
例如,输出:
soft
Documents/
word/
1.docx
2.docx
work/
abc.doc
ppt/
openggother/
如果不指定参数,则使⽤当前⽬录,如果指定参数,则使⽤指定⽬录。
下载练习:io-file (推荐使⽤IDE练习插件快速下载)
⼩结
Java标准库的java.io.File对象表⽰⼀个⽂件或者⽬录:
中秋节的英文创建File对象本⾝不涉及IO操作;
可以获取路径/绝对路径/规范路径:getPath()/getAbsolutePath()/getCanonicalPath();
leaflets可以获取⽬录的⽂件和⼦⽬录:list()/listFiles();
可以创建或删除⽂件和⽬录。