Java7+ nio文件操作:三元运算符实现临时文件创建的返回类型问题
问题直接解答
你尝试编写的这个三元表达式本身不符合Java语法规范,不存在可以填在????位置的合法数据类型,原因如下:
- 三元运算符
条件 ? 分支1 : 分支2要求两个分支的返回值必须是可互相转换的兼容类型 Files.delete(Path path)方法返回值为void,没有任何返回结果Files.createFile(Path path)方法返回值为Path类型void和Path完全不兼容,所以这个写法无法通过编译。
Java 7+ 更优雅的实现方案
你可以直接用JDK自带的简化API实现需求,不需要冗余的异常捕获和判断:
方案1:固定路径文件强制重建
Path docName = /* 你定义的目标文件路径 */; try { // 内置存在性判断,存在则删除,不存在直接返回false,无需额外判断 Files.deleteIfExists(docName); docName = Files.createFile(docName); } catch (IOException e) { // 按需处理异常即可 e.printStackTrace(); }
方案2:标准临时文件实现(自动清理)
如果你的需求是创建用完即删的临时文件,可以直接用JDK原生的临时文件API,不需要手动维护文件生命周期:
// 前缀、后缀可以自定义,默认放在系统临时文件目录 Path tempFile = Files.createTempFile("doc_", ".tmp"); // 配置JVM退出时自动删除文件 tempFile.toFile().deleteOnExit(); // 如果需要文件流关闭时自动删除,使用DELETE_ON_CLOSE选项打开即可 try (OutputStream os = Files.newOutputStream(tempFile, StandardOpenOption.DELETE_ON_CLOSE)) { // 执行文件写入逻辑 }
内容的提问来源于stack exchange,提问作者Ajay Kumar
相关产品推荐
相关产品推荐

