/
file_utils.clj
85 lines (65 loc) · 1.24 KB
/
file_utils.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
(ns lib.sfd.file-utils
(:import java.io.File))
(def *fs* File/separator)
(def *ps* File/pathSeparator)
(def *user-dir* (System/getProperty "user.dir"))
(defmulti to-file class)
(defmethod to-file String
[s]
(File. s))
(defmethod to-file File
[f]
f)
;;File Navigation
(defn filecat
"A tool for creating file paths. Platform independent."
[& args]
(apply str (interpose *fs* args)))
(defn filepath
[f]
(.getAbsolutePath (to-file f)))
(defn filename
[f]
(.getName (to-file f)))
(defn pwd
[f]
(.getParent (to-file f)))
(defn ls
[f]
(seq (.list (to-file f))))
;;File Attributes
(defn directory?
[f]
(.isDirectory (to-file f)))
(defn exists?
[f]
(.exists (to-file f)))
(defn file?
[f]
(.isFile (to-file f)))
(defn hidden?
[f]
(.isHidden (to-file f)))
(defn read?
[f]
(.canRead (to-file f)))
(defn write?
[f]
(.canWrite (to-file f)))
(defn last-modified
[f]
(.lastModified (to-file f)))
;;File Modifications
(defn touch
[f]
(.createNewFile (to-file f)))
(defn mkdir
"This wraps the java mkdirs method, in order to immitate the unix mkdir (I think)"
[f]
(.mkdirs (to-file f)))
(defn mv
[source dest]
(.renameTo (to-file source) (to-file dest)))
(defn rm
[f]
(.delete (to-file f)))