1,File类
通过File类可以实现系统中文件的创建,查看,重命名等操作
1.1 File的构造方法
我们看陌生的类,首先看构造,再看类中的方法
1.2 创建文件夹
mkdir:创建文件只创建最后一层目录/文件(常见错误),中间路径不存在,则返回false
mkdirs:创建至最后一层,若中间路径不存在则创建中间路径,但若文件夹已存在则返回false
1.3 创建文件
createNewFile,若存在路径相同的文件夹或者文件则返回false
1.4 判断是否存在
exists,可以判断判断文件或文件夹是否存在
1.5 重命名(剪切)
renameTo,剪切,利用剪切特性,实现文件和文件名的重命名,移动效果
1.6 删除
delete,删除文件和文件夹
无法删除有内容的文件夹
1.7 判断是否为文件
isFile() ,如果是文件则返回true ,不是文件或是文件夹或不存在则返回false
1.8 部分代码
import java.io.*;
public class IOdemo {
public static void main(String[] args) {
// 书写路径是采用统一格式,后续常用 一个做斜杠 "/"
// 全路径,出现字符串有斜杠表示转义字符,会对后面一个字符进行转义,。\n \t所以java中如果想要表示上面的路径可以使用两个有斜杠或者一个左斜杠
String path = "F:\\testCode"; // 常用windows
String path2 = "D:/testCode"; // 常用linux
String path4 = "testCode.txt"; // 常用windows
File file = new File(path);
File file2 = new File(path2);
File file3 = new File(file,path2);
File file4 = new File(path4);
System.out.println(file); //F:\testCode
System.out.println(file2); //D:\testCode
System.out.println(file3); //F:\testCode\D:\testCode 拼接
System.out.println(file4); //testCode.txt
// 创建文件只创建最后一层目录/文件
// 若test不存在则报false,test目录存在则为true
File fileA = new File("D:/testA/101");
boolean mkdir = fileA.mkdir();
System.out.println(mkdir);
// 创建至最后一层,若中间路径不存在则创建中间路径,但若文件夹已存在则返回false
// 不能重名
File fileB = new File("D:/testB/101/aaa.txt");
boolean mkdirs = fileB.mkdirs();
System.out.println(mkdirs);// 创建D:/testB/101/aaa/1.txt路径,不会创建出一个txt文件
// exists判断文件夹或者文件是否存在
if (fileB.exists()){
System.out.println("存在");
}else{
System.out.println("不存在");
}
// 创建文件
File fileC = new File("D:/testB/101.txt");
try {
//若存在路径相同的文件夹或者文件则返回false
//尤其注意,存在路径D:/testB/101/aaa,则无法创建D:/testB/101/aaa,但可以创建D:/testB/101/aaa.txt
//尤其注意,存在文件D:/testB/101/aaa.txt,则无法再创建D:/testB/101/aaa.txt,但可以创建D:/testB/101/aaa.jpa
File fileD = new File("D:/testB/");
if (!fileD.exists()){
fileD.mkdirs();
}
boolean newFile = fileC.createNewFile();
System.out.println(newFile);
} catch (IOException e) {
System.out.println(e.getMessage());//若路径不存在,则抛出异常
}
File fileE = new File("D:/testB");
boolean b = fileE.renameTo(new File("D:/testB/102.txt"));//文件不存在则返回false
boolean c = fileE.renameTo(new File("D:/testB/test/102.txt"));//文件不存在则返回false
boolean d = fileE.renameTo(new File("D:/testC/testAA"));//文件不存在则返回false
System.out.println(b);
System.out.println(c);
System.out.println(d);
boolean e = fileE.delete();//文件不存在则返回false,无法删除又内容的文件夹
System.out.println(e);
File fileF = new File("D:/testB/1.txt");
System.out.println(fileF.getName()); //1.txt
System.out.println(fileF.getAbsolutePath());//D:\testB\1.txt
System.out.println(fileF.getPath());//D:\testB\1.txt
File fileG = new File("testB/1.txt");
System.out.println(fileG.getName()); //1.txt
System.out.println(fileG.getAbsolutePath());//F:\testCode\testB\1.txt 会加工作区的路径
System.out.println(fileG.getPath());//D:\testB\1.txt
File fileH = new File("D:/testB/");
String[] strings = fileH.list();//若文件夹或文件不存在则返回空null,当为文件时也返回空
for (String s:strings){
System.out.println(s);
}
File[] files = fileH.listFiles();
for (File f:files){
System.out.println(f);
}
}
}
1.9 递归输出文件夹下的文件和文件夹,
package com.huanglk.io;
import java.io.File;
public class id {
public static void main(String[] args) {
File fileB = new File("F:\\新建文件夹");
System.out.println(fileB.isFile());
test(fileB,0);
}
public static void test(File file,int count){
File[] files = file.listFiles();
if (null!=files){
// String k = "";
//
// for (File f:files) {
// System.out.println(k+f.getName()+"===="+(f.isFile()?"文件":"文件夹"));
// test(f,count+1);
// }
for (File f:files) {
for (int a = 0;a<count;a++){
System.out.print("\t");
}
System.out.println(f.getName()+"===="+(f.isFile()?"文件":"文件夹"));
test(f,count+1);
}
}
}
}