JAVA基础 - java.io.IOException:Parent directory of file does not exist

当尝试使用Java的File类的createNewFile()方法创建文件时,如果文件的父目录不存在,会抛出IOException。解决此问题的方法是先检查并创建父目录,可以使用getParentFile().mkdirs()确保多级目录的创建。这样在文件创建前会自动创建缺失的上级目录。

写在前面

当执行file.createNewFile()时报父目录不存在。java.io.IOException:Parent directory of file does not exist

问题原因

createNewFile(),该方法只能用来创建文件,且只能在已存在的目录下创建文件,否则会创建失败。

解决方案

public void export(String path) throws IOException {
	...
    File file = new File(path);
    if (!file.exists() && file.isFile()) {
        if (file.isFile() && !file.exists()) {
            // 创建上级目录
            // mkdir(),  只能创建一级目录,如果上级不存在,就会创建失败。
            // mkdirs(), 能够创建多级目录,如果上级不存在,就会自动创建。
            file.getParentFile().mkdirs();
        }
        file.createNewFile();
    }
    ...
}
20250929 09:56:44,006 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:44,006 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:44,812 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:44,812 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:45,577 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:45,577 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:46,401 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:46,401 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:47,214 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:47,214 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:48,043 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:48,043 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:48,910 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:48,910 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:49,777 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:49,777 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:50,585 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:50,585 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:51,343 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:51,343 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:52,096 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:52,096 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:52,834 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:52,834 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:53,537 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:53,537 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:54,265 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:54,266 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:55,053 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:55,053 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0] 20250929 09:56:55,756 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:114) | ERROR | 检查下文件路径:./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log 20250929 09:56:55,756 | com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:115) | ERROR | No such file or directory - java.io.IOException: No such file or directory - at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_312] - at java.io.File.createNewFile(File.java:1023) ~[?:1.8.0_312] - at com.epoint.job.executor.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:111) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.logDetail(JobLogger.java:48) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.log.JobLogger.log(JobLogger.java:75) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.deleteTransStatus(DxpExecutecountJob.java:218) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.dxp.executecount.task.DxpExecutecountJob.execute(DxpExecutecountJob.java:58) ~[epoint-dxp-task-9.2-SNAPSHOT.jar:9.2-SNAPSHOT] - at com.epoint.job.executor.thread.JobThread.execute(JobThread.java:342) ~[epoint-job-executor-3.0.0.jar:3.0.0] - at com.epoint.job.executor.thread.JobThread.run(JobThread.java:184) ~[epoint-job-executor-3.0.0.jar:3.0.0]
最新发布
09-30
Java 程序中尝试创建文件时出现 `No such file or directory` 错误,通常是因为目标文件的父目录不存在。可以通过以下步骤解决该问题: ### 解决思路 在创建文件之前,先检查并创建文件的父目录。Java 提供了 `File` 类来处理文件和目录操作,可以使用 `mkdirs()` 方法递归创建父目录。 ### 代码示例 ```java import java.io.File; import java.io.IOException; public class CreateFileExample { public static void main(String[] args) { String filePath = "./data/applogs/xxl-job/jobhandler/2025-04-05/702431.log"; File file = new File(filePath); // 获取文件的父目录 File parentDir = file.getParentFile(); // 检查父目录是否存在,如果不存在则创建 if (!parentDir.exists()) { boolean success = parentDir.mkdirs(); if (success) { System.out.println("父目录创建成功"); } else { System.out.println("父目录创建失败"); } } // 尝试创建文件 try { boolean fileCreated = file.createNewFile(); if (fileCreated) { System.out.println("文件创建成功"); } else { System.out.println("文件已存在"); } } catch (IOException e) { System.out.println("创建文件时出错: " + e.getMessage()); } } } ``` ### 代码解释 1. **获取父目录**:使用 `file.getParentFile()` 方法获取文件的父目录。 2. **检查并创建父目录**:使用 `parentDir.exists()` 方法检查父目录是否存在,如果不存在则使用 `parentDir.mkdirs()` 方法递归创建父目录。 3. **创建文件**:使用 `file.createNewFile()` 方法尝试创建文件。如果文件已存在,该方法将返回 `false`。 ### 注意事项 - 确保程序有足够的权限在指定目录下创建文件和目录。 - 检查文件路径是否正确,避免拼写错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值