12

I have files that need an extra attribute called "encryption used". But this gives "IllegalArgumentExeption". I know why it gives that error, "encryption used" isn't known as an attribute, but is there a way I can force it to be? Or add custom metadata to the file?

 Path path = new File("/propertyfiles/encdec.properties").toPath();

    try{
        Files.setAttribute(path, "encryption used", "testtesttest");
    }catch(IOException e){
        System.out.println(e.getMessage());
    }
    try{
        System.out.println(Files.getAttribute(path, "encryption used"));
    }catch(IOException e){
        System.out.println(e.getMessage());
    }
2
  • does this attribute mean that file encdec.properties is encryped? Commented Sep 23, 2013 at 9:25
  • It means whatever you want it to mean. Commented Aug 3, 2018 at 10:41

1 Answer 1

14

If your file system supports user-defined (aka extended) attributes, then the way to set one would be like this:

Files.setAttribute(path, "user:encryption used", "testtesttest");

As the javadoc for setAttribute explains, the 2nd argument takes the form of an optional view-name and an attribute name. In this case, you need to use the UserDefinedFileAttributeView whose view-name is "user".

Note that different file system types support different attribute views, and your file system may not support this one. This particularly applies across different operating systems; e.g. you can't read a file's MacOS file attributes on a Linux system via these APIs.

Sign up to request clarification or add additional context in comments.

1 Comment

Also, it's worth mentioning that extended attributes are platform dependent, so an attribute on a file created, let's say, on MacOS, cannot be read on Linux (at least not naturally)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.