我想通過讀取文件的第一部分並分析內容來確定文件的類型(通常是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