文件
【小城贝尔】
文件抽象来表示,并非本身是事实。
检测是否文件夹,先定存在勿抓瞎。
获得文件的路径,绝对相对不同性。
文件创建磁盘累,系统保留忽后缀。
还有创建文件夹,是否有蛇映彩霞。
子类元素一把抓,文件可得名散花。
文件常用方法
public class FileMethods {
public static void main(String[] args)throws IOException {
//文件类常用的方法
String separator = File.separator;
System.out.println("separator :文件分隔符 "+separator);//separator :文件分隔符 \
//Constractor
File file = new File("src"+File.separator+"bgd.jpg");
//exists
Boolean exists = file.exists();
System.out.println("exists : "+exists);
//isFile or isDirecotr
Boolean isFile = file.isFile();
Boolean isDirectory = file.isDirectory();
System.out.println("isFile : "+isFile + " isDirectory: "+isDirectory);
//getPath getAbsolutePath getName getParent
String getPath = file.getPath();//src\bgd.jpg
String getAbsolutePath = file.getAbsolutePath();
String getName = file.getName();// getName bgd.jpg
String getParent = file.getParent();//getParent : src
File getParentFile = file.getParentFile();//getParentFile : src
System.out.println("getPath :"+ getPath +" getAbsolutePath : "+getAbsolutePath +" getName "+getName);
System.out.println("getParent : "+getParent);
System.out.println("getParentFile : "+getParentFile);
//length
long length = file.length();
System.out.println("length : "+length);
//createNewFile 创建和后缀无关
File file1 = new File("src/demo");
boolean isCreate = file1.createNewFile();//如果文件不存在就创建 存在就不创建
System.out.println("isCreate : "+isCreate);
//con是系统关键字不呢创建
File file2 = new File("src/con");
boolean isCreate2 = file2.createNewFile();//isCreate2 : false
System.out.println("isCreate2 : "+isCreate2);
//mkdir mkdirs
File mkDir = new File("src/mkes/dirs");
boolean mkdir = mkDir.mkdir();// mkdir : false mkdir 要保证父级路径存在才可以创建成功
boolean mkdirs = mkDir.mkdirs();// mkdirs :true 如果路径不存在都会创建
System.out.println("mkdir : "+mkdir + " mkdirs :"+mkdirs);
//list FileList
File lists = new File("src");
String[] names = lists.list();//获得该文件夹下的所有文件名称
File fils[] = lists.listFiles();//获得该文件下所有的子文件
System.out.println("names : "+ Arrays.toString(names));
System.out.println("fils : "+Arrays.toString(fils));
}
}
文件类封装应用
public class FileUtilsDemo {
private long size ;
private int fileSize;
private int dirSize;
//遍历文件夹
public void fileTraversal(File file,int deep){
if(file.exists()){//判断文件是否存在
//打印层级
for (int i = 0; i < deep ; i ++){
System.out.print("-");
}
//输出文件名字
System.out.println(file.getName());
//如果是文件获得所有的子文件
if(file.isDirectory()){
for(File fileSon :file.listFiles()){
fileTraversal(fileSon,deep+1);
}
}
}
}
//文件大小
public long fileSize(File file) throws FileNotFoundException{
if(!file.exists()){
throw new FileNotFoundException("您所传递的文件不存在");
}
if(file.isFile()){
size += file.length();
}else if(file.isDirectory()){
File[] filse = file.listFiles();
for (File fileSon: filse) {
fileSize(fileSon);
}
}
return size;
}
//文件夹 以及文件 个数
public int[] fileNumber(File file)throws FileNotFoundException{
if(!file.exists()){
throw new FileNotFoundException("您所传递的文件不存在");
}
if(file.isFile()){
fileSize++;
}else if(file.isDirectory()){
dirSize++;
File[] files = file.listFiles();
for(File fileSon : files){
fileNumber(fileSon);
}
}
int size [] = {fileSize ,dirSize};
return size;
}
//删除文件
public void deleteFile(File file)throws FileNotFoundException{
if(!file.exists()){
throw new FileNotFoundException("您所传递的文件不存在");
}
if (file.isFile()){
System.out.println("已删除文件 : "+ file.getName());
file.delete();
}else if(file.isDirectory()){
File[] files = file.listFiles();
for(File fileSon :files){
deleteFile(fileSon);
}
}
System.out.println("已删除文件夹 : "+ file.getName());
file.delete();
}
}
class TestFileUtils{
public static void main(String[] args) throws IOException {
FileUtilsDemo ff = new FileUtilsDemo();
//test travesal
ff.fileTraversal(new File("E:\\ERP资料"),0);
//test file 大小
long size = ff.fileSize(new File("E:\\ERP资料"));//size : 818319576
System.out.println("size : "+size);
//test 文件文件夹个数
int[] filNumber = ff.fileNumber(new File("E:\\ERP资料"));
System.out.println(Arrays.toString(filNumber));
// test delete file
ff.deleteFile(new File("E:\\picture\\front"));
}
}