文件创建和查找
经过上次的练习,用心写上一篇博客的感觉还不错,也不知道有没有帮助到别人。今天就再开始别的练习吧!!!(如果大家想看文件复制的话,就先等我学完数据流和对象流吧,我会和缓冲流字节流一起写出来的,但是估计又是一个大坑)。
简单认识
一、 首先让我们认识一下File这个东西
File类主要通过路径用于文件和目录的创建、文件的查找和文件的删除等,对文件内容本身并没有影响,若想修改文件内容则需流来操作。
**二、**在上代码之前,我们再来了解一下什么是相对路径和绝对路径
所谓相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。(此处照搬百度百科)简单来说,打开你的exlipse,左上角的那个东东就是先对路径
而他的绝对路径,就是从盘符开始算起,该文件所在的位置。
C:\Users\Administrator\Desktop\课程\查找目录\searchFile\src\searchFile
大家可以自行感受一下二者的区别。
好,我们要上代码了!
文件夹及文件的创建
public class FileDemo{
FileDemo fd=new FileDemo();
}
public Boolean createFolder(String path){创建不存在的目录
File folder=new File(path); //此处就是创建文件的操作,path为相对路径
if(!folder.exists()){ //假如文件不存在,exists()是判断是否存在的一个方法
Boolean b;
b=folder.mkdirs(); //创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。此处返回不二类型
if(b){
System.out.println("创建文件夹成功”);
return true;
}
else{
System.out.println(“创建文件夹失败”);
return false;
}
}
System.out.println(“文件夹已存在”);
return true;
}
//这样一个文件夹就创建好啦!!!
public Boolean createFile(String path){ //创建文件
File file=new File(path); //和创建文件夹一样的操作,path为相对路径
if(!file.exists()){ //如果文件不存在,就要去创建文件,接下来考虑,想要创建的文件的所在目录在不在
Boolean b=true;假设目录存在
String folderpath=path.substring(0,path.lastIndexOf("/")); //substring的作用是返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。这句话中,beginindex的值为0;
lasetIndexOf的作用是返回指定子字符串在此字符串中最右边出现处的索引,也就是把文件所处目录找出来。详细请看下面的图片
File folder =new File(folderpath);
if(!folder.exists()){ //如果不存在
b=createFolder(folderpath) //调用我们刚刚写的那个创建文件夹的方法
}
if(!b) System.out.println(“路径创建失败”);
b=false; //观测文件是否创建成功
try { //至于这里为什么会出现try,大家自己打代码的时候,explise会自动报错……
b=file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(b){
System.out.println("文件创建成功");
return true;
}
else{
System.out.println("文件创建失败");
return false;
}
}
}
就是把这个路径找出来,去看他在不在~
文件关键字查找
(在此笑声bibi一句,不用画图轻松好多,希望我在做树的时候可以对我温柔一点)。大家在我的电脑里查找文件的时候会不会都去所搜他的关键字!比如
我们会在这个小框框里,输入文件后缀,比如 .exe .txt
接下来我们就看看这个东西怎么做的!
(如果大家想看查找内容的话!!对不起我不会)
/**
* 我们试着搜索所有盘符
*/
public int searchKey(String path ,String key){ //肯定用递归写!因为不知道循环到什么时候是个头
int count=0; //计算到底有多少个文件
File folder=new File(path);
File[] list=folder.listFiles() //listFiles返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
if(list==null || list.length==0) //文件夹为空或者文件夹内没有任何内容
return 0;
for(int i=0;i<list.length;i++) {}//遍历每一个文件
if(list[i].getpath().contains(key){ //获取路径,如果包含key
System.out.println(list[i].getpath());
count++;
}
count+=searchKey(list[i].getpath(),key);
}
return count;
}
文件及文件夹的删除
public Boolean deleteFolder_File(String path){
File file=new File(path);
if(!file.exists()){
System.out.println("文件或文件夹不存在,删除失败");
return false;
}
Boolean b;
if(file.isDirectory()){ //判断其是否为一个目录,只有目录为空时,才可以删除
File list[]=file.listFiles();
if(list==null) return false;
else {
b=file.delete();
}
if(b) {
System.out.println("文件夹删除成功");
return true;
}
else {
System.out.println("文件夹删除失败");
return false;
}
}
if(file.isFile()){ //判断其是否是一个文件
b=file.delete();
if(b) {
System.out.println("文件删除成功");
return true;
}
else {
System.out.println("文件删除失败");
return false;
}
}
return true;
}
好!到此为止,基本操作就结束了!我们来写个主函数,看看效果如何!
public static void main(String args[]){
FileDemo fd=new FileDemo();
File[] list=fd.searchRoot();
// int count=0;
// String[] roots={"G:\\","F:\\","E:\\","D:\\","C:\\"};//查找关键字
// for(int i=0;i<roots.length;i++){
// count=fd.searchKeyFile(roots[i],"java");
// System.out.println("文件数有"+count+"个");
// }
// fd.createFile("searchFile/src/searchFile/FileDemosec.java");
// fd.deleteFolder_File("searchFile/src/searchFile/FileDemosec.java");
// fd.deleteFolder_File("searchFile/src/searchFile");
}
//以上代码全部注释,大家可以一个一个试
~~首先,我们试一下盘符搜索
大概就是这种感觉
~~再来试试创建文件夹和文件
删除文件夹的时候大家要注意,先删除文件,使文件夹为空才能成功删除,否则会显示删除文件夹失败的呦,大家可以都试一试嘞。你要在左边按F5才可刷新,或者右键efresh
这次就到这里啦,我是哈哈哈哈哈哈士奇,我们不知道有没有下期再见~