首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AsynchronousFileChannel不创建子目录

AsynchronousFileChannel不创建子目录
EN

Stack Overflow用户
提问于 2022-04-07 13:03:47
回答 1查看 56关注 0票数 0

当路径中不存在子目录时,下面的程序抛出"java.nio.file.NoSuchFileException“。有人能帮我一下吗?我该怎么做?我想以异步方式插入记录。

代码语言:javascript
复制
public static void main(String[] args) {

    String str = "testing application2.";
    Path path = Paths.get("/Users/santosh/test/operatord/testsd.txt");
    Set<StandardOpenOption> set = new HashSet<>();
    set.add(WRITE);
    set.add(CREATE);
    try {
        AsynchronousFileChannel asyncfileChannel = AsynchronousFileChannel.open(path, set,
                Executors.newFixedThreadPool(10));
        TestCompletionHandler handler = new TestCompletionHandler();
        ByteBuffer dataBuffer = ByteBuffer.wrap(str.getBytes());
        Attachment attachment = new Attachment(asyncfileChannel);
        asyncfileChannel.write(dataBuffer, 0, attachment, handler);
        attachment.getResponse().join();
        System.out.println(new String(Files.readAllBytes(path)));
    } catch (Throwable e) {
        e.printStackTrace();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2022-04-07 13:49:10

AsynchronousFileChannel不创建子目录

这是正确的。打开文件不会创建文件路径上的目录。您还将在打开文件的所有标准API中获得此行为。

您需要创建缺少的目录作为一个单独的操作。

这样做的首选方法是使用Files.makeDirectories方法;请参阅javadoc。这将尝试创建所有丢失的目录。

您还可以使用遗留的File.mkdirs(path)方法;请参阅javadoc。它做同样的事情,但是它的缺点是如果不能创建目录(或目录),它不会报告任何有意义的诊断。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71782694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档