文件基本操作
- 创建File实例:public File(String pathname)
- 创建空文件:public boolean createNewFile() throws IOException
其中,要注意的是,windows下的路径分割符是"\",linux下的是"/",当我们在windows下java中要用路径分割符,必须使用双斜杠"\\"。最好用File.seperator表示路径分割符:
public class Test {
public static void main(String[] args) {
File file=new File("d:"+File.separator+"y.txt");
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
true
- 判断文件是否存在:public boolean exists()
- 删除文件或者目录,如果是目录,必须是空目录,否则不删除:public boolean delete()
public class Test {
public static void main(String[] args) {
File file=new File("d:"+File.separator+"y");
if(file.exists()){
file.delete();
}else{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- 创建一级目录:public boolean mkdir()
- 创建多级目录:public boolean mkdirs()
public class Test {
public static void main(String[] args) {
File file = new File("d:" + File.separator + "yy"+File.separator+"oo");
if (!file.exists()) {
System.out.println(file.mkdir());//当且仅当它的父目录存在,且没有与它重名的目录或文件,创建这个子目录
}
if (!file.exists()){
System.out.println(file.mkdirs());//在这条路径中没有与它重名的目录或文件,创建这条路径上的所有必需且没有的目录
}
}
}
运行结果:
false
true
获取文件基本信息
public class Test {
public static void main(String[] args) {
File file=new File("d:"+File.separator+"tt"+File.separator+"y"+File.separator+"y.txt");
System.out.println(file);
System.out.println("name:"+file.getName());
System.out.println("path:"+file.getPath());
System.out.println("parent:"+file.getParent());//返回父路径字符串
System.out.println("parentFile:"+file.getParentFile());//返回抽象父路径File类对象
System.out.println("length:"+file.length()+"字节");//单位字节
System.out.println("lastModified:"+file.lastModified()+"="+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
System.out.println("list:"+file.list());//如果是文件或者是空目录或者该目录没有访问权限list()和listFiles()返回null
String[] strings=file.getParentFile().getParentFile().list();//返回一个字符串数组,每个数组元素对应目录中的每个文件或目录
for (int i=0;i<strings.length;i++){
System.out.println("list"+i+":"+strings[i]);
}
File[] files=file.getParentFile().getParentFile().listFiles();//返回一个抽象路径名数组,每个数组元素对应目录中的每个文件或目录的File类对象
for (int i=0;i<files.length;i++){
System.out.println("listFile"+i+":"+files[i]);
}
}
}
文件树结构是这样的:
运行结果:
d:\tt\y\y.txt
name:y.txt
path:d:\tt\y\y.txt
parent:d:\tt\y
parentFile:d:\tt\y
length:8字节
lastModified:1532758792463=2018-07-28 14:19:52
list:null
list0:ii.txt
list1:y
listFile0:d:\tt\ii.txt
listFile1:d:\tt\y
我们可以用以上方法列出指定目录下的所有子路径:
public class Test {
public static void main(String[] args) {
File file=new File("d:"+File.separator+"tt");
print(file);
}
public static void print(File file){
if (file.isDirectory()){
File[] result=file.listFiles();
if (result!=null){
for (int i=0;i<result.length;i++){
print(result[i]);
}
}
}
System.out.println(file);
}
}
运行结果:
d:\tt\ii.txt
d:\tt\y\hh.txt
d:\tt\y\y.txt
d:\tt\y
d:\tt