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 package org.apache.hc.core5.http.io.entity;
29
30 import java.io.File;
31 import java.io.FileInputStream;
32 import java.io.IOException;
33 import java.io.InputStream;
34
35 import org.apache.hc.core5.annotation.Contract;
36 import org.apache.hc.core5.annotation.ThreadingBehavior;
37 import org.apache.hc.core5.http.ContentType;
38 import org.apache.hc.core5.util.Args;
39
40
41
42
43
44
45 @Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
46 public class FileEntity extends AbstractHttpEntity {
47
48 private final File file;
49
50 public FileEntity(final File file, final ContentType contentType, final String contentEncoding) {
51 super(contentType, contentEncoding);
52 this.file = Args.notNull(file, "File");
53 }
54
55 public FileEntity(final File file, final ContentType contentType) {
56 super(contentType, null);
57 this.file = Args.notNull(file, "File");
58 }
59
60 @Override
61 public final boolean isRepeatable() {
62 return true;
63 }
64
65 @Override
66 public final long getContentLength() {
67 return this.file.length();
68 }
69
70 @Override
71 public final InputStream getContent() throws IOException {
72 return new FileInputStream(this.file);
73 }
74
75 @Override
76 public final boolean isStreaming() {
77 return false;
78 }
79
80 @Override
81 public final void close() throws IOException {
82
83 }
84
85 }