Je voudrais déterminer le type d'un fichier (généralement UTF-8) en lisant la première partie du fichier et en analysant le contenu. (Le type est spécifique à ma communauté mais pas sous mon contrôle et non couvert par MIME/MediaType qui est normalement TEXT_PLAIN). J'utilise la bibliothèque « de org.restlet » sur le client pour analyser l'en-tête avecLire la première partie d'un fichier en utilisant HTTP
Request request = new Request(Method.HEAD, url);
donc je sais la longueur du contenu et peut (si nécessaire et possible) estimer le nombre d'octets je télécharger pour l'analyse CLARIFICATION: Je ne peux pas utiliser le MediaType.
De la réponse 1 semble que je dois obtenir le contenu. Une question révisée serait donc:
"Puis-je obtenir partie d'un fichier en utilisant Restlet?"
REPONSE: Le code suivant fait ce que je veux. J'ai crédité @BalusC pour montrer le chemin. S'il vous plaît commenter si j'ai oublié quelque chose:
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;
}
Nous avons découvert que vous ne pouvez pas améliorer les fichiers que vous lisez afin qu'ils incluent le type de fichier. Nous savons que nous pouvons lire un petit nombre d'octets de chaque fichier en utilisant un InputStream. Quelle est votre question? –
@Tony Ennis. Je pense que vous avez répondu à ma question. Que je devrais créer un inputStream à partir de l'URL et lire un nombre d'octets. J'avais oublié le InputStream –