1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2;
18
19 import org.apache.commons.vfs2.util.RandomAccessMode;
20 import org.junit.Test;
21
22
23
24
25
26 public class ProviderRandomReadWriteTests extends AbstractProviderTestCase {
27 private static final String TEST_DATA = "This is a test file.";
28
29
30
31
32 protected FileObject createScratchFolder() throws Exception {
33 final FileObject scratchFolder = getWriteFolder();
34
35
36 scratchFolder.delete(Selectors.EXCLUDE_SELF);
37 scratchFolder.createFolder();
38
39 return scratchFolder;
40 }
41
42
43
44
45 @Override
46 protected Capability[] getRequiredCapabilities() {
47 return new Capability[] { Capability.GET_TYPE, Capability.CREATE, Capability.RANDOM_ACCESS_READ,
48 Capability.RANDOM_ACCESS_WRITE };
49 }
50
51
52
53
54 @Test
55 public void testRandomWrite() throws Exception {
56 try (FileObject file = createScratchFolder().resolveFile("random_write.txt")) {
57 file.createFile();
58 final RandomAccessContent ra = file.getContent().getRandomAccessContent(RandomAccessMode.READWRITE);
59
60
61 ra.writeByte(TEST_DATA.charAt(0));
62
63
64 ra.seek(3);
65 ra.writeByte(TEST_DATA.charAt(3));
66 ra.writeByte(TEST_DATA.charAt(4));
67
68
69 ra.seek(3);
70 ra.writeByte(TEST_DATA.charAt(7));
71 ra.writeByte(TEST_DATA.charAt(8));
72
73
74 ra.seek(10);
75 ra.writeByte(TEST_DATA.charAt(10));
76 ra.writeByte(TEST_DATA.charAt(11));
77
78
79 ra.seek(0);
80 assertEquals(ra.readByte(), TEST_DATA.charAt(0));
81
82 ra.seek(3);
83 assertEquals(ra.readByte(), TEST_DATA.charAt(7));
84 assertEquals(ra.readByte(), TEST_DATA.charAt(8));
85
86 ra.seek(10);
87 assertEquals(ra.readByte(), TEST_DATA.charAt(10));
88 assertEquals(ra.readByte(), TEST_DATA.charAt(11));
89 }
90 }
91 }