Exemplo n.º 1
0
  public static long getFileKey(Path filePath) {
    if (!Files.exists(filePath)) {
      return -1;
    }

    try {
      if (OSDetector.isApple()) {
        Xattrj xattrj = getXattrj();

        if (xattrj == null) {
          return -1;
        }

        String fileKey = xattrj.readAttribute(filePath.toFile(), "fileKey");

        if (fileKey == null) {
          return -1;
        }

        return Long.parseLong(fileKey);
      } else {
        UserDefinedFileAttributeView userDefinedFileAttributeView =
            Files.getFileAttributeView(filePath, UserDefinedFileAttributeView.class);

        List<String> list = userDefinedFileAttributeView.list();

        if (!list.contains("fileKey")) {
          return -1;
        }

        ByteBuffer byteBuffer = ByteBuffer.allocate(userDefinedFileAttributeView.size("fileKey"));

        userDefinedFileAttributeView.read("fileKey", byteBuffer);

        CharBuffer charBuffer = _CHARSET.decode((ByteBuffer) byteBuffer.flip());

        return Long.parseLong(charBuffer.toString());
      }
    } catch (Exception e) {
      _logger.error(e.getMessage(), e);

      return -1;
    }
  }
Exemplo n.º 2
0
  protected static void doWriteFileKey(Path filePath, String fileKey) {
    if (hasFileKey(filePath, Long.parseLong(fileKey))) {
      return;
    }

    if (OSDetector.isApple()) {
      Xattrj xattrj = getXattrj();

      if (xattrj == null) {
        return;
      }

      File file = filePath.toFile();

      if (!file.canWrite()) {
        file.setWritable(true);
      }

      xattrj.writeAttribute(file, "fileKey", fileKey);
    } else {
      File file = filePath.toFile();

      if (!file.canWrite()) {
        file.setWritable(true);
      }

      UserDefinedFileAttributeView userDefinedFileAttributeView =
          Files.getFileAttributeView(filePath, UserDefinedFileAttributeView.class);

      try {
        userDefinedFileAttributeView.write("fileKey", _CHARSET.encode(CharBuffer.wrap(fileKey)));
      } catch (Exception e) {
        _logger.error(e.getMessage(), e);
      }
    }
  }