首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用VFS实现“移动”功能

用VFS实现“移动”功能
EN

Stack Overflow用户
提问于 2019-11-28 07:51:08
回答 1查看 44关注 0票数 3

我试图用Xodus实现一个包装好的"move“函数,但是有些事情没有得到正确的解决:

代码语言:javascript
复制
  @Override
  public boolean move(String appId, String name, String targetName) {
    final boolean[] success = new boolean[1];
    final Environment env = manager.getEnvironment(xodusRoot, appId);
    final VirtualFileSystem vfs = manager.getVirtualFileSystem(env);
    env.executeInTransaction(
            new TransactionalExecutable() {
              @Override
              public void execute(@NotNull final Transaction txn) {
                File file = vfs.openFile(txn, name, false);
                InputStream input = vfs.readFile(txn, file);
                if(input != null) {
                  File targetFile = vfs.openFile(txn, targetName, true);
                  DataOutputStream output = new DataOutputStream(vfs.writeFile(txn, targetFile));
                  try {
                    output.write(ByteStreams.toByteArray(input));
                  } catch (IOException e) {
                    e.printStackTrace();
                  }
                  vfs.deleteFile(txn, name);
                  success[0] = true;
                }
              }
            });
    // vfs.shutdown();
    // env.close();
    return success[0];
  }

问题是文件被移动,但字节数组没有被复制,不确定问题是否是由于同一个事务中的多个VFS操作造成的。有人能告诉我为什么源文件中的字节没有被正确复制吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-28 13:51:38

看起来您正在尝试实现另一个版本的VirtualFileSystem.renameFile(..)

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

https://stackoverflow.com/questions/59084013

复制
相关文章

相似问题

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