我想通过读取文件的第一部分并分析内容来确定文件的类型(通常是UTF-8)。 (该类型特定于我的社区,但不在我的控制之下,不包含在通常为TEXT_PLAIN的MIME/MediaType中)。我使用的客户端上的“org.restlet”库分析与使用HTTP读取文件的第一部分
Request request = new Request(Method.HEAD, url);
头,所以我知道内容长度和可以(如果有必要和可能的),估计我应该有多少个字节下载分析
CLARIFICATION:我无法使用MediaType。从答案1似乎我必须获取内容。修改后的问题因此将是:
“我可以使用Restlet获取文件的部分吗?”
答案: 下面的代码做我想要的。我已经记下了@BalusC的展示方式。请评论,如果我错过了什么:
public String readFirstChunk(String urlString, int byteCount) {
String text = null;
if (urlString != null) {
org.restlet.Client restletClient = new org.restlet.Client(Protocol.HTTP);
Request request = new Request(Method.GET, urlString);
List<Range> ranges = Collections.singletonList(new Range(0, byteCount));
request.setRanges(ranges);
Response response = restletClient.handle(request);
if (Status.SUCCESS_OK.equals(response.getStatus())) {
text = processSuccessfulChunkRequest(response);
} else if (Status.SUCCESS_PARTIAL_CONTENT .equals(response.getStatus())) {
text = processSuccessfulChunkRequest(response);
} else {
System.err.println("FAILED "+response.getStatus());
}
}
return text;
}
private String processSuccessfulChunkRequest(Response response) {
String text = null;
try {
text = response.getEntity().getText();
} catch (IOException e) {
throw new RuntimeException("Cannot download chunk", e);
}
return text;
}
我们发现您无法增强您正在阅读的文件,因此它们包含文件类型。我们知道我们可以使用InputStream从每个文件读取少量字节。你有什么问题? – 2010-10-23 16:07:11
@Tony Ennis。我想你已经回答了我的问题。我应该从URL创建一个inputStream并读取一些字节。我忘记了InputStream – 2010-10-23 16:11:57