Java生成文件报错之FileNotFoundException
程序员文章站
2022-03-27 08:54:05
...
有这样一种需求,导出一个Excel文件,要求文件名中包含当前时间(精确到秒),只需要将当前时间格式化为字符串,然后用字符串与Excel后缀拼接起来作为待导出的Excel的全文件名,用这个全文件名构造一个输出流即可,于是有如下代码:
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class NoColonTest {
public static void main(String[] args) throws Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String fileName = simpleDateFormat.format(new Date());
String wholeFileName = fileName + ".xls";
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(wholeFileName);
File file = new File(wholeFileName);
if (file.exists()) {
file.delete();
}
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
怎么报错了呢,对于输出流来讲如果文件名不存在就会新创建文件,如果存在就覆盖原有文件,难道不是这样吗?在看看报错原因:文件名、目录名或卷标语法不正确,难到是文件名带了特殊字符?在桌面上新建一个文件,在文件名中输入冒号,windows果然报错了,说文件名不能包含\ / : * ? "<>|,好吧,那我创建日期格式化器时索性把时分秒之间的冒号和年月日的连字符全部去掉,于是将上述代码改为如下:
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class NoColonTest {
public static void main(String[] args) throws Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String fileName = simpleDateFormat.format(new Date());
String wholeFileName = fileName + ".xls";
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(wholeFileName);
File file = new File(wholeFileName);
if (file.exists()) {
file.delete();
}
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
OK,这次报错消失正常生成了Excel文件,文件名年月日时分秒全部连在一起,这时忽然想起QQ截图保存时默认的文件名中包含的就有年月日时分秒,中间也没有任何符号;Ctrl+Alt+a,随手调出QQ截图,保存,嗯,还真是这样!
这种方式生成的Excel文件,用2013版本打开时会报如下一个错误,但仍然能打开,如果用Apache POI对改文件操作后再打开时就不报错了(原因暂时不详):
写到这个,回头一看,是自己不熟悉文件命名规则才导致的错误,长点心吧!
解释一下类名,NoColonTest,colon是冒号的意思,所以整体是指“不带冒号的测试”!
上一篇: jquery手机号码正则验证
推荐阅读
-
Java缩略图生成库之Thumbnailator应用说明
-
hadoop入门之通过java代码实现将本地文件上传到hadoop的文件系统
-
零基础写python爬虫之打包生成exe文件
-
JavaScript之生成器_动力节点Java学院整理
-
java生成可执行文件(制作可执行文件)
-
tomact正常启动,但是在日志文件报错java.lang.NoClassDefFoundError: java/util/logging/Logger
-
java导出生成word之XML方式
-
Python学习笔记之open()函数打开文件路径报错问题
-
Java IO流之原理分类与节点流文件操作详解
-
Java利用exe4j工具生成exe文件实例演示,IntelliJ IDEA将项目转化为jar包方法,运行生成后的程序弹出exe4j提示处理