java怎么创建文件-调用createNewFile方法落地本地文件
上次赶后端日志归档模块的时候,临时突击研究java怎么创建文件,本以为是最简单的基础操作,结果因为忽略了路径和异常问题,硬生生卡了半个多小时,踩的坑比写的代码还多,彻底颠覆了我对这个基础功能的轻视心态。
最开始直接无脑敲了几行基础代码,运行就直接爆红报错。
当时随手new了一个File对象,只简单填了自定义的文件名,偷懒用了相对路径,满心以为项目运行之后,会自动在项目根目录生成对应的空白文件,完全没考虑过Java底层的执行逻辑。点击运行后控制台瞬间抛出IOException输入输出异常,密密麻麻的报错信息铺满了控制台,那时候脑子转不过弯,还傻乎乎反复重启运行程序,甚至清理了IDE的缓存,折腾了十几分钟毫无进展,压根没意识到核心问题:Java创建文件时,不会自动补全不存在的上级文件夹路径,只要路径里有任意一级目录不存在,文件创建就会直接失败。
后来才反应过来,单纯实例化File对象,只是在内存中生成了一个文件路径的虚拟引用,和本地磁盘没有任何关联,根本算不上真正的创建文件操作。
真正落地文件的核心,就靠createNewFile()这一个方法。
当时一点点修正代码,先放弃了容易出错的相对路径,手动填写了完整的磁盘绝对路径,提前建好所有层级的上级文件夹,保证路径真实有效,之后在File对象后调用createNewFile()方法,同时捕获了必须处理的编译异常。再次运行程序后,控制台干干净净没有一条报错,打开对应的磁盘目录,终于看到了新建出来的空白目标文件,这一刻才算真正实现了Java创建文件的基础功能。
中间还犯了个特别低级的混淆错误,把创建目录的mkdir()方法当成了创建文件的方法使用,调试之后发现本地多出了一个无后缀的空文件夹,完全达不到生成文件的需求。这两个方法看着相似,实际作用天差地别,mkdir()只用来创建文件夹,绝对不能用来生成txt、doc这类格式文件,这是很多新手都会踩的共性坑。
实操里还摸透了一个很实用的细节,createNewFile()方法有自带的容错机制,如果本地路径下已经存在同名文件,不会覆盖原有文件,也不会抛出异常,只会直接返回布尔值false,不会影响程序正常运行,不用额外编写文件判空覆盖的逻辑,日常简单使用完全够用。
那天调试完所有代码,把可用的文件创建工具类整理好并入项目,关掉IDE的时候,电脑文件夹里还散落着一堆刚才测试失败生成的无效文件夹和临时文件,乱糟糟的堆在角落。