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.http.client.fluent;
29
30 import java.io.File;
31 import java.io.FileInputStream;
32 import java.io.IOException;
33 import java.io.InputStream;
34 import java.io.OutputStream;
35
36 import org.apache.http.entity.AbstractHttpEntity;
37 import org.apache.http.entity.ContentType;
38 import org.apache.http.util.Args;
39
40 class InternalFileEntity extends AbstractHttpEntity implements Cloneable {
41
42 private final File file;
43
44 public InternalFileEntity(final File file, final ContentType contentType) {
45 super();
46 this.file = Args.notNull(file, "File");
47 if (contentType != null) {
48 setContentType(contentType.toString());
49 }
50 }
51
52 @Override
53 public boolean isRepeatable() {
54 return true;
55 }
56
57 @Override
58 public long getContentLength() {
59 return this.file.length();
60 }
61
62 @Override
63 public InputStream getContent() throws IOException {
64 return new FileInputStream(this.file);
65 }
66
67 @Override
68 public void writeTo(final OutputStream outStream) throws IOException {
69 Args.notNull(outStream, "Output stream");
70 final InputStream inStream = new FileInputStream(this.file);
71 try {
72 final byte[] tmp = new byte[4096];
73 int l;
74 while ((l = inStream.read(tmp)) != -1) {
75 outStream.write(tmp, 0, l);
76 }
77 outStream.flush();
78 } finally {
79 inStream.close();
80 }
81 }
82
83 @Override
84 public boolean isStreaming() {
85 return false;
86 }
87
88 }