Compare commits
1 commit
master
...
attribute-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8c4be9d70 |
2 changed files with 49 additions and 1 deletions
|
|
@ -394,6 +394,7 @@
|
||||||
java.nio.file.FileAlreadyExistsException
|
java.nio.file.FileAlreadyExistsException
|
||||||
java.nio.file.FileSystem
|
java.nio.file.FileSystem
|
||||||
java.nio.file.FileSystems
|
java.nio.file.FileSystems
|
||||||
|
java.nio.file.FileStore
|
||||||
java.nio.file.FileVisitor
|
java.nio.file.FileVisitor
|
||||||
java.nio.file.FileVisitOption
|
java.nio.file.FileVisitOption
|
||||||
java.nio.file.FileVisitResult
|
java.nio.file.FileVisitResult
|
||||||
|
|
@ -410,7 +411,8 @@
|
||||||
java.nio.file.attribute.FileTime
|
java.nio.file.attribute.FileTime
|
||||||
java.nio.file.attribute.PosixFileAttributes
|
java.nio.file.attribute.PosixFileAttributes
|
||||||
java.nio.file.attribute.PosixFilePermission
|
java.nio.file.attribute.PosixFilePermission
|
||||||
java.nio.file.attribute.PosixFilePermissions])
|
java.nio.file.attribute.PosixFilePermissions
|
||||||
|
java.nio.file.attribute.UserDefinedFileAttributeView])
|
||||||
java.security.DigestInputStream
|
java.security.DigestInputStream
|
||||||
java.security.KeyFactory
|
java.security.KeyFactory
|
||||||
java.security.KeyPairGenerator
|
java.security.KeyPairGenerator
|
||||||
|
|
@ -728,6 +730,8 @@
|
||||||
java.nio.file.Path
|
java.nio.file.Path
|
||||||
(instance? java.nio.file.FileSystem v)
|
(instance? java.nio.file.FileSystem v)
|
||||||
java.nio.file.FileSystem
|
java.nio.file.FileSystem
|
||||||
|
(instance? java.nio.file.FileStore v)
|
||||||
|
java.nio.file.FileStore
|
||||||
(instance? java.nio.file.PathMatcher v)
|
(instance? java.nio.file.PathMatcher v)
|
||||||
java.nio.file.PathMatcher
|
java.nio.file.PathMatcher
|
||||||
(instance? java.util.stream.Stream v)
|
(instance? java.util.stream.Stream v)
|
||||||
|
|
|
||||||
44
test-resources/user_defined_attribute_view.clj
Normal file
44
test-resources/user_defined_attribute_view.clj
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
(ns user-defined-attribute-view
|
||||||
|
(:import [java.nio.file Files Paths]
|
||||||
|
[java.nio.file.attribute UserDefinedFileAttributeView FileAttribute]
|
||||||
|
[java.nio.charset StandardCharsets])
|
||||||
|
(:require [babashka.fs :as fs]))
|
||||||
|
|
||||||
|
(defn set-user-defined-attribute
|
||||||
|
"Sets a user-defined attribute on the specified file."
|
||||||
|
[file-path attribute-name attribute-value]
|
||||||
|
(let [path file-path
|
||||||
|
view (.getFileAttributeView (Files/getFileStore path)
|
||||||
|
UserDefinedFileAttributeView)]
|
||||||
|
(when view
|
||||||
|
(let [bytes (.getBytes attribute-value StandardCharsets/UTF_8)]
|
||||||
|
(.write view attribute-name bytes 0 (count bytes)))
|
||||||
|
(println "Attribute set successfully."))))
|
||||||
|
|
||||||
|
(defn get-user-defined-attribute
|
||||||
|
"Gets a user-defined attribute from the specified file."
|
||||||
|
[file-path attribute-name]
|
||||||
|
(let [path file-path
|
||||||
|
view (.getFileAttributeView (Files/getFileStore path)
|
||||||
|
UserDefinedFileAttributeView)]
|
||||||
|
(when view
|
||||||
|
(let [size (.size view attribute-name)
|
||||||
|
buffer (byte-array size)]
|
||||||
|
(.read view attribute-name buffer 0 size)
|
||||||
|
(String. buffer StandardCharsets/UTF_8)))))
|
||||||
|
|
||||||
|
;; Example usage
|
||||||
|
(defn -main []
|
||||||
|
(let [tmp-dir (fs/temp-dir)
|
||||||
|
file-path (fs/path tmp-dir "example.txt")
|
||||||
|
_ (fs/delete-on-exit file-path)
|
||||||
|
attribute-name "user.comment"
|
||||||
|
attribute-value "This is a test comment."]
|
||||||
|
;; Create an example file
|
||||||
|
(Files/createFile file-path (into-array FileAttribute []))
|
||||||
|
;; Set and get the user-defined attribute
|
||||||
|
(set-user-defined-attribute file-path attribute-name attribute-value)
|
||||||
|
(println "Retrieved attribute:"
|
||||||
|
(get-user-defined-attribute file-path attribute-name))))
|
||||||
|
|
||||||
|
(-main)
|
||||||
Loading…
Reference in a new issue