一.文件或者文件目录的封装
package java_Studing_day48_IO流8_file;
import java.io.File;
public class fileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
constractorDemo();
}
private static void constractorDemo() {
// 可以将一个已存在的或者不存在的文件或者目录封装成对象
File f1=new File("f1.txt");
File f2=new File("c:\\","f2.txt");
//可以先将路径封装成对象,便于管理路径
File f=new File("c:\\");
File f3=new File(f,"file3.txt");//路径加文件名
File f4=new File("c:\\abc\\f4.txt");
File f5=new File("c:"+System.getProperty("file.separator")+"abc\\f4.txt");
//file.separator,路径分隔符
File f6=new File("c:"+File.separator+"abc"+File.separator+"f4.txt");
System.out.println(f4);
System.out.println(f5);
System.out.println(f6);
}
}
二.File类对文件或者目录的基本操作
package java_Studing_day48_IO流8_file;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
/**
* 1.获取
* 1.1获取文件名称
* 1.2获取文件路径
* 1.3获取文件大小
* 1.4获取文件修改时间
*
* 2.创建,与删除.
* boolean
* 3.判断
* exist 是否存在,必须先判断是否存在,在进行其他判断
* 4.重命名
* rename
*
*
* 获取你本机上最大空闲空间的盘符
*
*
* **/
public class filefunctionDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//changefile();
//getDemo();
//creatAndDeleteDemo();
//isDemo();
//reName();
listRootsDemo();
}
/************************获取根目录(盘符,分区)*********************/
private static void listRootsDemo() {
File file=new File("c:\\");//将D盘封装成对象
System.out.println("getFreeSpace:"+file.getFreeSpace());//获取当前对象空闲空间
System.out.println("getTotalSpace:"+file.getTotalSpace());//获取当前对象总空间容量
System.out.println("getUsableSpace:"+file.getUsableSpace());//获取当前对象可用空间容量
// 获取系统根目录
// File[] files=File.listRoots();
// for(File file:files){
// System.out.println(file);
// }
}
/***************************重命名********************************/
private static void reName() {
// TODO Auto-generated method stub
File f1=new File("a.txt");
File f2=new File("c.txt");
File f3=new File("d:\\cc.txt");
//将同一路径下的文件重命名
boolean b=f1.renameTo(f2);
//如果文件路径变了,文件会被剪切并重命名到新的路径
boolean d=f2.renameTo(f3);
System.out.println(b);
System.out.println(d);
}
/**********判断******************************************/
private static void isDemo() throws IOException {
// TODO Auto-generated method stub
File file=new File("jorian1.txt");//封装路径或者文件名为一个对象
boolean b=file.exists();
//file.createNewFile();
file.mkdir();
boolean c=file.isDirectory();//是否是文件夹
boolean d=file.isFile();//是否是文件
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
/*****************文件夹的创建与删除********************/
private static void creatAndDeleteDemo() throws IOException {
File dir=new File("dd");//其实封装的是最后qqw文件夹
File dirs=new File("gg\\asddf\\sdf\\aslk\\asdhj\\df\\df\\df\\e\\r\\t\\y\\qqw");//其实封装的是最后qqw文件夹
boolean b=dir.mkdir(); //创建文件夹
dirs.mkdirs();//创建多级文件夹
//dir.delete();
//dir.deleteOnExit(); //只会删除qqw文件夹,因为dir中封装的其实就是qqw文件夹
/*************文件的创建和删除***********************/
File file=new File("d:\\file.txt");
//
boolean a=file.createNewFile();//如果文件不存在创建,如果文件存在报False
//
// boolean f=file.delete();//直接删除
// file.deleteOnExit();//程序退出时删除
// System.out.println(a);
}
/********文件内容的修改****************************/
private static void changefile() throws IOException {
// TODO Auto-generated method stub
BufferedWriter bfw=new BufferedWriter(new FileWriter("a.txt"));
bfw.write("Jorian是个大帅哥");
bfw.close();
}
/*****************文件属性的获取**********************/
public static void getDemo() {
File file=new File("xxxxx.txt");//第一步,封装文件或者文件目录为对象
String name=file.getName();//文件名
String abPath=file.getAbsolutePath();//绝对路径
String path=file.getPath();//相对路径
long len=file.length();//文件大小
long time=file.lastModified();//文件最后一次了修改时间,此方法可以用来判断文件最后一次了的修改时间,判断是否需要重新读取文件
//时间格式转换
Date date=new Date(time);
DateFormat dateFormat =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
String dtime=dateFormat.format(date);
System.out.println("name:"+name);
System.out.println("abPath:"+abPath);//绝对路径,具体的路径
System.out.println("path:"+path);//相对路径,没有指定前边的路径
System.out.println("len:"+len);
System.out.println("time:"+dtime);
}
}
三.list方法遍历指定文件目录,FileFilter的使用
1>>
package java_Studing_day48_IO流8_file;
import java.io.File;
public class FilelistDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
listDemo();
listDemo2();
}
/*********************list方法升级,遍历指定目录*****************/
private static void listDemo2() {
// TODO Auto-generated method stub
File dir=new File("D:\\");
String [] names=dir.list(new fileFilter());
/*fileFilter的运行原理:先用list方法获取目录下所有文件,
然后用accept方法遍历没所有文件名,返回和给定条件符合的文件名,就是结果为true的*/
for(String name:names){
System.out.println(name);
}
}
/***************list方法的使用*******************/
public static void listDemo() {
/*****************************/
File file=new File("d:\\");
/*****************************
*调用list方法的file对象中封装的必须是目录
*否则会发生NullPointerException空指针异常
*如果访问系统级目录也会发生空指针异常
*如果目录存在但是没有内容.会返回一个数组,但是长度为0
*
*/
String[] names=file.list();//获取当前路径下文件或者文件夹名称列表,包括隐藏文件
for(String name:names){//遍历names,将每一次遍历到的值放在name中
System.out.println(name);
}
}
}
2>>>
package java_Studing_day48_IO流8_file;
import java.io.File;
import java.io.FilenameFilter;
public class fileFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
System.out.println(dir+"--------"+name);
return name.endsWith(".java");//返回以.java结尾的文件
}
}
四.练习,获取本机最大空闲容量的盘符
package java_Studing_day48_IO流8_file;
/************
*
* 作业:
* 获取本机最大容量的盘符
*
*
*
* */
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class getMaxFreeSpaceDir {
public static void main(String[] args) {
// 获取系统目录下最大容量的盘符
get();
}
private static void get() {
File[] files=File.listRoots();//将获取到的所有盘符放到一个目录数组里
long max = 0 ; //定义最大容量值
Map map= new HashMap();//定义一个map集合
for(int i=0;i<files.length;i++){//遍历盘符
String dir=files[i].toString();//将每个盘符转成String类型
File file=new File(dir); //将盘符封装成file对象
long fs=file.getFreeSpace(); //获取盘符的空闲容量
map.put(fs, dir);//通过Map将空闲容量和 盘符对应起来
max=max>=fs?max:fs;//刷新最大容量值
}
System.out.println(map.get(max));//通过容量搜索Map里边对应盘符
}
}