FILE_文件构造方法创建删除遍历等功能经典三个小题目
Posted 所得皆惊喜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FILE_文件构造方法创建删除遍历等功能经典三个小题目相关的知识,希望对你有一定的参考价值。
文章目录
①. File类概述
-
①. File类是Java提供的针对针对磁盘中的文件或目录转换对象的包装类
File可以代表文件或文件夹
File对象可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建和删除等功能 -
②. 绝对路径:是一个固定的路径,从盘符开始
-
③. 相对路径相对于某个位置,在eclipse下是指当前项目下
②. 构造方法
-
①. File(String pathname):根据一个路径得到File对象
-
②. File(String parent,String child):根据一个目录和一个子文件/目录得到File对象
-
③. File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象
//File(String pathname):根据一个路径得到File对象
//写一个\\表示转义了,所以要写两个
File file=new File("C:\\\\Users\\\\Administrator\\\\Desktop\\\\day19_video");
boolean flag=file.exists();
System.out.println(flag);
File file2=new File("hello.txt");
System.out.println(file2.exists());
//File(String parent,String child):根据一个目录和一个子文件/目录得到File对象
String parent="F:\\\\";
String child="f.txt";
File file3=new File(parent,child);
System.out.println(file3.exists());
//File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象
File parent2=new File("F:\\\\");
File file4=new File(parent2,child);
System.out.println(file4.exists());
③. File类的创建功能
-
①. public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了
-
②. public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了
-
③. public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来(多级文件夹)
//public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了
File file=new File("yyy.txt");
System.out.println(file.createNewFile());
//public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了
File dir1=new File("aaa");
System.out.println(dir1.mkdir());
//这样写是可以的,文件夹也可以有后缀的
File dir2=new File("aaa.txt");
System.out.println(dir2.mkdir());
//public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
File file3=new File("yyy\\\\xxx");
System.out.println(file3.mkdirs());
④. 重命名和删除功能
- ①. public boolean renameTo(File dest):把文件重命名为指定的文件路径
- 如果路径名相同,就是改名
- 如果路劲名不同,就是改名并剪切
- ②. public boolean delete():删除文件或者文件夹
- Java中的删除不走回收站
- 如果一个目录中有内容(目录、文件),不能直接删除。应该先删除目录下的内容,最后才删除目录
File file1=new File("world.txt");
File file2=new File("F:\\\\world.txt");
File file3=new File("hello.txt");
System.out.println(file1.renameTo(file2));
//如果删除一个文件夹,那么文件夹必须是空的
System.out.println(file3.delete());
⑤. File类的判断功能
-
①. public boolean exists( ):判断文件(File)是否存在
-
②. public boolean isFile( ):判断File是否为文件
-
③. public boolean isDirectory( ):判断File是否为目录
//创建一个File对象
File f = new File("D:\\\\heima\\\\java基础加强\\\\day08\\\\案例\\\\老师讲解代码\\\\myFile\\\\java.txt");
// public boolean isDirectory():测试此抽象路径名表示的File是否为目录
// public boolean isFile():测试此抽象路径名表示的File是否为文件
// public boolean exists():测试此抽象路径名表示的File是否存在
System.out.println(f.isDirectory());//false
System.out.println(f.isFile());//true
System.out.println(f.exists());//true
⑥. 获取路径功能
-
①. public String getAbsolutePath( ):获取绝对路径
-
②. public String getPath( ):获取的是File()构造器中的方法的参数
-
③. public String getName( ): 获取名称
-
④. public File[ ] listFiles():`获取指定目录下的所有文件或者文件夹的File数组
-
⑤. public String[ ]list():获取指定目录下所有的文件或者文件夹的名称数组
// 现在在IDEA的项目目录下有一个a.txt
File file=new File("a.txt");
// 获取到的是E:\\workcode\\4.23.0-dev\\a.txt
System.out.println(file.getAbsolutePath());
// a.txt
System.out.println(file.getPath());
File dir=new File("F:\\\\");
//获取F盘下所有的文件或文件夹对象
File[]subFiles=dir.listFiles();
for(File subFile:subFiles)
if(subFile.isFile()&&subFile.getName().endsWith(".jpg"))
System.out.println(subFile);
⑦. 文件三个小题目
- ①. 键盘录入的文件夹,搜索以.txt结尾的文件
/*
题目一:键盘录入一个文件夹路径
对键盘录入的文件夹路径进行判断
如果不存在,提示重新录入
如果是文件路径,提示再次录入文件夹录入
如果是文件夹路径,搜索该文件下所有以.txt结尾的文件(包含子目录中的文件)
*/
public class Test02
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹的路径:");
//由于不确定到底要输入几次,最好来一个无限循环,这里也可以定义成一个方法
while(true)
//输入数据
String s = sc.nextLine();
//一个字符串,怎么确定是一个文件夹的路径? 或者是文件的路???
//可以把输入的字符串变成一个 File对象
//每次输入一个字符串,就把该字符串变成File
File file = new File(s);
//有可能是用户乱输入
//最好先判断是否在计算机中存在
if(!file.exists())
System.out.println("哥们,您输入的不存在,请重新输入!!!");
else if(file.isFile())
System.out.println("哥们,请输入一个文件夹好吗?");
else
//那么 file 代表的路径一定是 文件夹的路径
//如果是文件夹路径,搜索该文件下所有 以.txt结尾的文件(包含子目录中的文件)
//因为你要递归,所以要定义一个方法专门用于打印 .TXT 结尾的文件
print(file);
//结束循环
break;
private static void print(File f)
/*
分析:
1,首先应该获取某一个文件夹下的所有数据 (不包含子文件) 返回一个File数组
2,遍历数组
3,判断数组中的对象是否为文件
如果是文件,判断该文件是否是 .txt文件
如果是就直接输出该文件的名字
如果不是文件,就需要递归调用
*/
File[] files = f.listFiles();
if(files!=null)
//2,遍历数组
for (File file : files)
//3,判断数组中的对象是否为文件
if(file.isFile())
//如果是就直接输出该文件的名字
if(file.getName().endsWith(".txt"))
System.out.println(file.getName());
else
//如果不是文件,就需要递归调用
print(file);
- ②. 删除指定的目录(包含子目录)注意:切记别删除有用的数据,“概不负责哟”(重点是空目录的删除)
//这里的重点是空目录的删除
/*
题目二:删除指定的目录(包含子目录)注意:切记别删除有用的数据,"概不负责哟"
*/
public class Test03
public static void main(String[] args)
//创建一个File对象,指向一个文件夹路径
File f = new File("D:\\\\新建文件夹");
deleteDir(f);
public static void deleteDir(File file)
/* 分析:
文件夹不能直接删除,应该先删除文件夹中的文件,如果有子文件还需要先删除子文件夹中的文件
1,获取 file 该文件夹下的所有数据 (不包含子文件夹中的数据), 返回是就是一个数组
2,遍历数组
3,判断数组中的数据是否为 文件
如果是文件,直接 干掉
如果是文件夹,需要递归调用
会剩下 空文件夹*/
//1,获取 file 该文件夹下的所有数据 (不包含子文件夹中的数据), 返回是就是一个数组
File[] files = file.listFiles();
if(files!=null)
//2,遍历数组
for (File f : files)
//3,判断数组中的数据是否为 文件
if(f.isFile())
//如果是文件,直接 干掉
f.delete();
else
//如果是文件夹,需要递归调用
deleteDir(f);
//只要在循环之后把File删除即可
file.delete();
- ③.键盘录入一个文件夹路径,统计该文件夹(不包含子文件夹)中,每种类型的文件及个数
键盘录入一个文件夹路径,统计该文件夹(不包含子文件夹)中,每种类型的文件及个数,
注意:用文件类型("java","txt"...)作为key,用个数作为value,
放入到map集合中,并按照如下格式打印map集合中的内容
docx类型的文件有 1 个
java类型的文件有 24 个
txt类型的文件有 10 个
public class Demo5
public static void main(String[] args)
File file=getFile();
printNum(file);
for(String key:hm.keySet())
Integer value=hm.get(key);
System.out.println(key+"="+value);
static HashMap<String,Integer> hm=new HashMap<>();
//获取文件的个数
public static void printNum(File file)
//F:\\test
//将文件夹遍历
File[] files = file.listFiles();
if(files!=null)
for(File file2:files)
//判断是否是文件夹,如果是文件夹就递归调用
if(file2.isDirectory())
printNum(file2);
else
//得到每一个文件夹中的文件的名字
String str=file2.getName();
//获取最后一个.出现的索引
int index=str.lastIndexOf(".");
//获取后缀名字
str=str.substring(index+1);//txt
//System.out.println(str);
hm.put(str,!hm.containsKey(str)?1:hm.get(str)+1);
//得到文件
private static File getFile()
Scanner sc=new Scanner(System.in);
System.out.println("键盘录入一个文件夹路径");
String line ;
while(true)
line = sc.nextLine();
File file=new File(line);
if(!file.exists())
System.out.println("你输入的文件夹路径不存在,请重新输入");
else if(file.isFile())
System.out.println("你输入的是文件,请重新输入");
else
return file;
以上是关于FILE_文件构造方法创建删除遍历等功能经典三个小题目的主要内容,如果未能解决你的问题,请参考以下文章