File 对象
三种指向,File对象
File file = new File(String url);
File file = new File(String url1,String url2);
File file1 = new File(String url1);
File file2 = new File(file1,String url2);
三中创建方法文件/文件夹:
File.createNewFile() 创建这样的文件,如果存在就不创建
File.mkdir() 创建文件夹 如果存在就不创建
File.mkdirs() 创建文件夹 多目录创建文件
碰到问题:
如果不小心写成File file = new File(a.txt) --->在当前目录下
默认路径就在本项目下
//删除功能
File.delete() 删除 文件/文件夹----直接删除不了含有文件/文件夹的文件夹
File.重命名功能:
File.renameTo(File file)
---如果路径相同,则就是改名
--- File file1 = new File("aaa.jpg");
--- File newfile2 = new File("bbb.jpg") --- file.renameTo(newfile2)
---如果路径不相同,则就是剪切改名
---File file1 = new File("aaa.jpg");
---File newFile = new File("e:\\bbb.jpg");
---file1.renameTo(newFile);
File 判断的一些方法:
isDirectory() 判断是否是目录
isFile() 判断是否是文件
exists() 判断是否存在
canRead() 判断是否可读
canWrite() 判断是否可写
isHidden() 判断是否隐藏
File基本获取功能:
String getAbsolutePath() 返回绝对路径
String getPath() 返回相对路径
String getName() 获取文件名称
long length() 返回长度 字节数
long lasstModiFied() 获取最后一次修改时间 返回毫秒值
---Date d = new Date(long)
---SimpleDateFormat sdf = new SimpleDateFormat("yyyy--MM--dd HH:mm:ss");
----String s =sdf.format(d);
---sysout(d) 得到最后修改时间
File高级获取功能:
String [] list() 获取指定目录下所有文件的名称
File[] listFiles() 获取指定目录下的file数组--递归做删除美滴很
//例子 获取d盘下素有后缀名为.txt 文件的 文件名称
public class IoDemo3 {
public static void main(String[] args) {
File file = new File("D://");
find(file);
}
public static void find(File file){
File [] fileList = file.listFiles();
if(fileList==null){return;}//这个一定要加,否则查找会出现空指针异常
for(File file1:fileList){System.out.println(file1);if(!file1.isFile()){find(file1);}else{String s =file1.getName();if(s.endsWith(".txt")){System.out.println(s);}}}}}
还有一种方法(用FilenameFilter 内部类):不能递归 简单查找。
经典批量修改三国演义...那个题:
三国演义_001_asdasdasdad_白展堂.jpg--->001_白展堂.jpg---目录:E:\测试
代码实现:
public class IoDemo4 {
//三国演义_001_asdasdasdad_白展堂.jpg--->001_白展堂.jpg---目录:E:\测试
public static void main(String[] args) {
File file = new File("E:\\测试");
xiugai(file);
}
public static void xiugai(File file){
File [] fileList = file.listFiles();
for(File f1 : fileList){
String ming = null;
String fileName = f1.getName();
//首先获取_的第一位置
int index = fileName.indexOf("_");
String filename1 = fileName.substring(index+1, index+4);
int last = fileName.lastIndexOf("_");
String filename2 = fileName.substring(last,fileName.length());
ming = filename1+filename2;
//开始改名字,创建一个file 文件
File newFile = new File(file,ming);
System.out.println(newFile);
f1.renameTo(newFile); //修改名称的第一种方式 必须路径相同
}
}
}
递归实现阶乘:
public static void main(String[] args) {
System.out.println(jiecheng(5));
}
public static int jiecheng(int x){
if(x==1){
return 1;
}else{
return x*jiecheng(x-1);
}
}
递归实现目录修改名字:
//三国演义_001_asdasdasdad_白展堂.jpg--->001_白展堂.jpg---目录:E:\测试
public static void main(String[] args) {
File file = new File("E:\\测试");
xiugai(file);
}
public static void xiugai(File file){
File [] fileList = file.listFiles();
for(File f1 : fileList){
String ming = null;
String fileName = f1.getName();
//首先获取_的第一位置
int index = fileName.indexOf("_");
String filename1 = fileName.substring(index+1, index+4);
int last = fileName.lastIndexOf("_");
String filename2 = fileName.substring(last,fileName.length());
ming = filename1+filename2;
//开始改名字,创建一个file 文件
File newFile = new File(file,ming);
System.out.println(newFile);
f1.renameTo(newFile); //修改名称的第一种方式 必须路径相同
}
}