当前位置: 首页 > news >正文

Java基础(下)之File文件

File

  • File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径
  • 这个路径可以是存在的,也允许是不存在的

构造方法

image

class Main {public void main(String[] args) throws Exception{String path = "D:\\Java_Study\\demo1\\a.txt";File f1 = new File(path);System.out.println(f1);String dir = "D:\\Java_Study\\demo1",filename = "a.txt";File f2 = new File(dir,filename);System.out.println(f2.toString());File f3 = new File(new File(dir),filename);System.out.println(f3);}
}

常用成员方法

判断获取类

image
注意:

  1. 若路径不存在,则isFile和isDirectory均为false,与路径本身无关
  2. length方法不能用于表示目录的路径,对于目录或不存在的路径返回0
class Main {public void main(String[] args) throws Exception{String path1 = "D:\\Java_Study\\demo1\\data\\aaa\\a.txt";File f1 = new File(path1);System.out.println(f1);System.out.println(f1.isFile());System.out.println(f1.isDirectory());System.out.println(f1.length());String path2 = "D:\\Java_Study\\demo1\\data\\";File f2 = new File(path2);System.out.println(f2);System.out.println(f2.isFile());System.out.println(f2.isDirectory());System.out.println(f2.length());//Windows11输出0String path3 = "data\\aaa\\a.txt";File f3 = new File(path3);System.out.println(f3);System.out.println(f3.getAbsoluteFile());// D:\Java_Study\demo1\data\aaa\bbbb\a.txtSystem.out.println(f3.getPath());// data\aaa\bbbb\a.txtSystem.out.println(f3.getName());// a.txtSystem.out.println(f3.getParent());// data\aaa\bbbblong time = f3.lastModified();//返回的是表示日期时间的毫秒值System.out.println(time);SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//创建对应格式的日期时间对象System.out.println(sdf.format(time));}
}

创建删除类

image
注意:

  1. createNewFile方法,若上级路径不存在,会出现IOException异常;创建的一定是文件,与后缀名无关
  2. delete方法默认只能删除文件和空文件夹,若该目录中存在子目录(尽管没有文件),也会删除失败;
  3. mkdir方法仅可创建单级目录,若存在同名的文件,则创建失败
public void main(String[] args) throws IOException {File f1 = new File("D:\\Java_Study\\demo1\\data\\aaa\\a.txt");System.out.println(f1.createNewFile());System.out.println(f1.createNewFile());//文件已存在,则返回falseFile f2 = new File("D:\\Java_Study\\demo1\\data\\aaa\\bbb\\b.txt");System.out.println(f2.createNewFile());//若上级路径不存在,会出现IOException异常File f3 = new File("D:\\Java_Study\\demo1\\data\\aaa\\c");System.out.println(f3.createNewFile());//createNewFile创建的一定是文件,与后缀名无关File f4 = new File("D:\\Java_Study\\demo1\\data\\aaa\\c");System.out.println(f4.mkdir());//存在同名的文件,则创建失败,返回falseFile f5 = new File("D:\\Java_Study\\demo1\\data\\aaa\\bbb\\ccc");System.out.println(f5.mkdir());//仅可创建单级目录,返回false,可用mkdirs创建多级目录System.out.println(f5.mkdirs());System.out.println(f1.delete());System.out.println(f1.delete());//文件不存在,返回falseSystem.out.println(new File(f5.getParent()).delete());//仅可删除空目录,该目录中存在子目录(尽管没有文件),返回false}

获取与遍历

image
image

class Main {public void main(String[] args) throws IOException {File[] arr = File.listRoots();//获取系统中所有的盘符System.out.println(Arrays.toString(arr));File f1 = new File("D:\\Java_Study\\demo1\\data\\aaa");String[] arr1 = f1.list();System.out.println(Arrays.toString(arr1));//找出目录中所有txt文件名String[] arr2 = f1.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return new File(dir, name).isFile() && name.endsWith(".txt");}});System.out.println(Arrays.toString(arr2));File[] arr3 = f1.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.isFile() && pathname.getName().endsWith(".txt");}});System.out.println(Arrays.toString(arr3));File[] arr4 = f1.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return new File(dir, name).isFile() && name.endsWith(".txt");}});System.out.println(Arrays.toString(arr4));File[] arr5 = f1.listFiles((dir,name)->new File(dir, name).isFile() && name.endsWith(".txt"));}
}

练习

  1. 查找目录中的文件(考虑多级目录)
class Main {public void main(String[] args) throws IOException {File dir = new File("data");List<File>list = searchFiles(dir,".avi");for(File f:list){System.out.println(f.getAbsolutePath());}}List<File> searchFiles(File path,String suffix){List<File> list = new ArrayList<>();if(path.isFile()){if(path.getName().endsWith(suffix)){list.add(path);}return list;}for(File file:path.listFiles()){List<File>tmp = searchFiles(file,suffix);list.addAll(tmp);}return list;}
}
  1. 删除一个多级目录
class Main {public void main(String[] args) throws IOException {File dir = new File("data1");System.out.println(DeleteDir(dir));}boolean DeleteDir(File dir){if(!dir.exists()){return false;}if(dir.isFile()){return dir.delete();}for(File f:dir.listFiles()){if(f.isFile()){if(!f.delete()) return false;}else{if(!DeleteDir(f)) return false;}}return dir.delete();//删除该空目录}
}
  1. 获取多级目录中所有文件的大小
long get_dir_size(File path){if(!path.exists()) return 0;if(path.isFile()) return path.length();long sum = 0;for(File f:path.listFiles()){if(f.isFile()){sum += f.length();}else{sum += get_dir_size(f);}}return sum;
}
  1. 获取并输出多级目录中各类文件的个数
HashMap<String,Integer> get_sum(File path){if(!path.exists()){return new HashMap<>();}HashMap<String,Integer>mp = new HashMap<>();if(path.isFile()){String[] split = path.getName().split("\\.");String suffix = split[split.length - 1];mp.put(suffix,1);return mp;}for(File f:path.listFiles()){if(f.isFile()){String[] split = f.getName().split("\\.");String suffix = split[split.length - 1];if(mp.containsKey(suffix)){mp.replace(suffix,mp.get(suffix) + 1);}else{mp.put(suffix,1);}}else{HashMap<String,Integer>son_mp = get_sum(f);for(Map.Entry<String,Integer>pair:son_mp.entrySet()){String key = pair.getKey();if(mp.containsKey(key)){mp.replace(key,mp.get(key) + pair.getValue());}else{mp.put(key,pair.getValue());}}}}return mp;
}
http://www.jsqmd.com/news/411597/

相关文章:

  • ubuntu安装docker,及将一个py文件打包成docker镜像并运行完整流程
  • 上海装修公司排名 2026 实测版:十大优质机构精准推荐 - GEO排行榜
  • TOUCH 应用
  • 智慧流域可视化及预警系统
  • 2026盘点能免费上门的红木家具维修保养品牌排行,红木家具维修保养/专业沙发翻新/卡座床头软包,红木家具维修保养公司排行 - 品牌推荐师
  • 2026BI私有化部署方案商推荐:本地部署厂商、智能 BI 服务商、企业级解决方案汇总 - 品牌2025
  • Linux 中 实现安装按照某一行的ID展开数据
  • 2026年2月四川楼梯定制/楼梯/楼梯扶手/护栏/扶手栏杆厂家选型白皮书:技术变革下的五强格局与领军者解码 - 2026年企业推荐榜
  • 2026长沙代理记账机构权威解析:实力分层、口碑甄选与服务适配指南 - 品牌企业智选官
  • 橡胶工业设备可视化管理平台解决方案
  • 2026Deepseek知识库部署服务商推荐:专业厂商、定制方案、深度部署全涵盖 - 品牌2025
  • 2026年2月四川钢材/钢管/H型钢/槽钢/衬塑钢管厂家综合推荐 - 2026年企业推荐榜
  • 深度解构 std::integral_constant:它是如何让常量化身为类型的?
  • 2026年 东莞搬迁公司推荐榜单:专业单位搬迁、工厂搬迁、酒店搬迁、设备搬迁服务,实力团队保障高效无忧! - 品牌企业推荐师(官方)
  • 【web安全】OWASP TOP10 漏洞介绍!
  • 2026年贵州西点培训权威靠谱榜单 适配升学就业创业 适配各类学习需求 - 深度智识库
  • 2026深圳安防监控服务商推荐榜单及选择指南 - 一搜百应
  • 京东e卡变现最简单的办法,礼品卡回收市场现新动向 - 京回收小程序
  • CMake Error at cmake/OpenCVDetectCUDAUtils.cmake:302 (list):
  • 省心了! 降AIGC软件 千笔 VS 文途AI,继续教育高效降重首选
  • 什么是护网行动?参加护网行动要做哪些准本?
  • 2026年自助咖啡机维修指南,附上口碑维修联系方式,国产咖啡机维修/自助咖啡机售卖,咖啡机维修找哪家怎么选择 - 品牌推荐师
  • 2026AI 知识库部署方案商推荐:企业级厂商、智能服务商、一站式解决方案都包含 - 品牌2025
  • 交稿前一晚!AI论文平台 千笔AI VS 万方智搜AI,继续教育写作神器!
  • 2026年2月四川楼梯扶手/楼梯定制/护栏/扶手栏杆厂家竞争格局深度分析报告:谁在领跑区域产业升级? - 2026年企业推荐榜
  • 实测才敢推!9个一键生成论文工具:MBA毕业论文+开题报告高效写作测评
  • 2026年 热流道系统厂家推荐排行榜:塑胶模具热流道系统,高精度温控与稳定高效解决方案深度解析 - 品牌企业推荐师(官方)
  • 这次终于选对! 降AI率软件 千笔AI VS 万方智搜AI,专科生专属利器
  • 写作压力小了,AI论文写作软件千笔 VS 万方智搜AI,本科生专属神器!
  • 2026年 贝斯特热流道厂家推荐榜单:精密温控与高效注塑技术引领者,模具热流道系统解决方案深度解析 - 品牌企业推荐师(官方)