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 package org.apache.http.impl.client.cache;
28
29 import java.io.File;
30 import java.io.FileInputStream;
31 import java.io.IOException;
32 import java.io.InputStream;
33
34 import org.apache.http.annotation.Contract;
35 import org.apache.http.annotation.ThreadingBehavior;
36 import org.apache.http.client.cache.Resource;
37
38
39
40
41
42
43 @Contract(threading = ThreadingBehavior.SAFE)
44 public class FileResource implements Resource {
45
46 private static final long serialVersionUID = 4132244415919043397L;
47
48 private final File file;
49
50 private volatile boolean disposed;
51
52 public FileResource(final File file) {
53 super();
54 this.file = file;
55 this.disposed = false;
56 }
57
58 synchronized File getFile() {
59 return this.file;
60 }
61
62 @Override
63 public synchronized InputStream getInputStream() throws IOException {
64 return new FileInputStream(this.file);
65 }
66
67 @Override
68 public synchronized long length() {
69 return this.file.length();
70 }
71
72 @Override
73 public synchronized void dispose() {
74 if (this.disposed) {
75 return;
76 }
77 this.disposed = true;
78 this.file.delete();
79 }
80
81 }