Java tutorial
package org.apache.http.entity; import com.newrelic.agent.android.analytics.AnalyticAttribute; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.http.annotation.NotThreadSafe; import org.apache.http.util.Args; @NotThreadSafe public class FileEntity extends AbstractHttpEntity implements Cloneable { protected final File file; @Deprecated public FileEntity(File file, String str) { this.file = (File) Args.notNull(file, "File"); setContentType(str); } public FileEntity(File file, ContentType contentType) { this.file = (File) Args.notNull(file, "File"); if (contentType != null) { setContentType(contentType.toString()); } } public FileEntity(File file) { this.file = (File) Args.notNull(file, "File"); } public boolean isRepeatable() { return true; } public long getContentLength() { return this.file.length(); } public InputStream getContent() throws IOException { return new FileInputStream(this.file); } public void writeTo(OutputStream outputStream) throws IOException { Args.notNull(outputStream, "Output stream"); InputStream fileInputStream = new FileInputStream(this.file); try { byte[] bArr = new byte[AnalyticAttribute.ATTRIBUTE_VALUE_MAX_LENGTH]; while (true) { int read = fileInputStream.read(bArr); if (read == -1) { break; } outputStream.write(bArr, 0, read); } outputStream.flush(); } finally { fileInputStream.close(); } } public boolean isStreaming() { return false; } public Object clone() throws CloneNotSupportedException { return super.clone(); } }