import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.UserDefinedFileAttributeView;

public class TestUDFAV {

    public static void main(String[] args) throws IOException {

        if (args.length == 0) {
            System.out.println("Needs a path as parameter.");
            System.exit(1);
        }
        String name = "user.test";
        Path filePath = Paths.get(args[0]);
        FileStore fileStore = filePath.getFileSystem().provider().getFileStore(filePath);
        System.out.println("FileSystemProvider: " + filePath.getFileSystem().provider());
        System.out.print("FileStore.supportsFileAttributeView says: ");
        System.out.println(fileStore.supportsFileAttributeView(UserDefinedFileAttributeView.class));

        UserDefinedFileAttributeView udfav = Files.getFileAttributeView(filePath, UserDefinedFileAttributeView.class);
        System.out.println("UserDefinedFileAttributeView: " + udfav);
        System.out.println("UserDefinedFileAttributeView.list() returned " + udfav.list());
        
        ByteBuffer content = Charset.defaultCharset().encode("SimpleTest");
            udfav.write(name, content);
            if (content.remaining() != 0) {
                System.out.println("Still " + content.remaining() + " bytes left i the buffer");
            } else {
                System.out.println("UserDefinedFileAttributeView.write(\"" + name + "\", ...)");
            }
            System.out.println("UserDefinedFileAttributeView.list() returned " + udfav.list());
            udfav.delete(name);
        
    }

}
