1 | static int fileOpBot_maxReadSize = 500000; |
2 | static int fileOpBot_maxWriteSize = 500000; |
3 | |
4 | static S fileOpBot(S s) ctex { |
5 | new Matches m; |
6 | |
7 | if "get user home" |
8 | ret ok(userHome()); |
9 | |
10 | if "list directory *" |
11 | ret structure(listDirAwarenessStyle(new File(assertAbsolutePath(m.unq(0))))); |
12 | |
13 | if "mkdir *" { |
14 | S dir = assertAbsolutePath(m.unq(0)); |
15 | mkdir(new File(dir)); |
16 | ret new File(dir).exists() ? "ok" : "problem"; |
17 | } |
18 | |
19 | if (matchOneOf(s, m, "rmdir *", "delete file *")) { |
20 | S dir = assertAbsolutePath(m.unq(0)); |
21 | new File(dir).delete(); |
22 | ret !new File(dir).exists() ? "ok" : "problem"; |
23 | } |
24 | |
25 | if "load file * bin from * l *" { |
26 | File f = new File(assertAbsolutePath(m.unq(0))); |
27 | long from = parseLong(m.unq(1)); |
28 | int l = parseInt(m.unq(2)); |
29 | if (l > fileOpBot_maxReadSize) |
30 | fail(format("Can't read more than * bytes per call", fileOpBot_maxReadSize)); |
31 | byte[] buf = new byte[l]; |
32 | RandomAccessFile raf = new RandomAccessFile(f, "r"); |
33 | try { |
34 | raf.seek(from); |
35 | raf.readFully(buf); |
36 | ret "OK " + bytesToHex(buf); |
37 | } finally { |
38 | raf.close(); |
39 | } |
40 | } |
41 | |
42 | if "get file * length" { |
43 | File f = new File(assertAbsolutePath(m.unq(0))); |
44 | ret str(f.length()); |
45 | } |
46 | |
47 | if "set file * length to *" { |
48 | File f = new File(assertAbsolutePath(m.unq(0))); |
49 | RandomAccessFile raf = new RandomAccessFile(f, "rw"); |
50 | try { |
51 | raf.setLength(parseLong(m.unq(1))); |
52 | ret "OK"; |
53 | } finally { |
54 | raf.close(); |
55 | } |
56 | } |
57 | |
58 | if "write file * bin from * data *" { |
59 | print(shorten(s, 200)); |
60 | File f = new File(assertAbsolutePath(m.unq(0))); |
61 | long from = parseLong(m.unq(1)); |
62 | byte[] data = hexToBytes(m.unq(2)); |
63 | if (l(data) > fileOpBot_maxWriteSize) |
64 | fail(format("Can't write more than * bytes per call", fileOpBot_maxWriteSize)); |
65 | RandomAccessFile raf = new RandomAccessFile(f, "rw"); |
66 | try { |
67 | raf.seek(from); |
68 | raf.write(data); |
69 | ret "OK"; |
70 | } finally { |
71 | raf.close(); |
72 | } |
73 | } |
74 | |
75 | null; |
76 | } |
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1004128 |
Snippet name: | fileOpBot |
Eternal ID of this version: | #1004128/1 |
Text MD5: | 98e354fa07f89a6f4c9fbe0cd8198c5c |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-01-12 03:17:51 |
Source code size: | 2089 bytes / 76 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 641 / 970 |
Referenced in: | [show references] |