Java 的 createNewFile() - 它也会创建目录吗?

发布于 2024-11-19 13:29:21 字数 204 浏览 1 评论 0原文

我有一个条件来在继续之前检查某个文件是否存在(./logs/error.log)。如果没有找到我想创建它。但是,

File tmp = new File("logs/error.log");
tmp.createNewFile();

如果 logs/ 不存在,也会创建它吗?

I've got a conditional to check if a certain file exists before proceeding (./logs/error.log). If it isn't found I want to create it. However, will

File tmp = new File("logs/error.log");
tmp.createNewFile();

also create logs/ if it doesn't exist?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

贱人配狗天长地久 2024-11-26 13:29:21

编号
在创建文件之前使用tmp.getParentFile().mkdirs()

No.
Use tmp.getParentFile().mkdirs() before you create the file.

梦幻的味道 2024-11-26 13:29:21
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();
柠檬心 2024-11-26 13:29:21
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

如果目录已经存在,则不会发生任何事情,因此您不需要任何检查。

File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

If the directories already exist, nothing will happen, so you don't need any checks.

亣腦蒛氧 2024-11-26 13:29:21

Java 8 样式

Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());

写入文件

Files.write(path, "Log log".getBytes());

读取

System.out.println(Files.readAllLines(path));

完整示例

public class CreateFolderAndWrite {

    public static void main(String[] args) {
        try {
            Path path = Paths.get("logs/error.log");
            Files.createDirectories(path.getParent());

            Files.write(path, "Log log".getBytes());

            System.out.println(Files.readAllLines(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java 8 Style

Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());

To write on file

Files.write(path, "Log log".getBytes());

To read

System.out.println(Files.readAllLines(path));

Full example

public class CreateFolderAndWrite {

    public static void main(String[] args) {
        try {
            Path path = Paths.get("logs/error.log");
            Files.createDirectories(path.getParent());

            Files.write(path, "Log log".getBytes());

            System.out.println(Files.readAllLines(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
萌化 2024-11-26 13:29:21

StringUtils.touch(/path/filename.ext) 现在 (>=1.3) 还会创建目录和文件(如果它们不存在)。

StringUtils.touch(/path/filename.ext) will now (>=1.3) also create the directory and file if they don't exist.

一绘本一梦想 2024-11-26 13:29:21

不,如果logs不存在,您将收到java.io.IOException:没有这样的文件或目录

Android开发人员的有趣事实:调用类似Files.createDirectories()Paths.get() 在支持 min api 26 时可以工作。

No, and if logs does not exist you'll receive java.io.IOException: No such file or directory

Fun fact for android devs: calls the likes of Files.createDirectories() and Paths.get() would work when supporting min api 26.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文