Alternative à java.nio.fichier.Fichiers en Java 6
J'ai le morceau de code suivant qui utilise le java 7 fonctionnalités comme java.nio.fichier.Fichiers et java.nio.fichier.Les chemins de
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class JacksonObjectMapper {
public static void main(String[] args) throws IOException {
byte[] jsonData = Files.readAllBytes(Paths.get("employee.txt"));
ObjectMapper objectMapper = new ObjectMapper();
Employee emp = objectMapper.readValue(jsonData, Employee.class);
System.out.println("Employee Object\n"+emp);
Employee emp1 = createEmployee();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
StringWriter stringEmp = new StringWriter();
objectMapper.writeValue(stringEmp, emp1);
System.out.println("Employee JSON is\n"+stringEmp);
}
}
Maintenant, je dois exécuter le même code sur la version 6 de Java , quelles sont les meilleures alternatives possibles autres que l'aide FileReader ?
Notez que Oracle Java SE 6 atteint en Fin de Vie.
org.apache.commons.io peut vous aider à vérifier cette [lien] commons.apache.org/proper/commons-io/apidocs/org/apache/commons/...
org.apache.commons.io peut vous aider à vérifier cette [lien] commons.apache.org/proper/commons-io/apidocs/org/apache/commons/...
OriginalL'auteur Amit Sharad | 2014-01-10
Vous devez vous connecter pour publier un commentaire.
Alternative sont des classes de java.io ou Apache Commons IO, aussi Goyave IO peut vous aider.
Goyave est plus moderne, donc je pense que c'est la meilleure solution pour vous.
Lire la suite: Goyave I/O package de services publics, a expliqué.
OriginalL'auteur MariuszS
Dans
Files
source de la classe, vous pouvez voir que dansreadAllBytes
méthode octets sont lus à partir de InputStream.return read(in, (int)size)
- ici, il utilise de la mémoire tampon pour lire des données à partir d'InputStream.De sorte que vous pouvez le faire de la même manière, ou simplement utiliser la Goyave ou Apache Commons IO http://commons.apache.org/io/.
OriginalL'auteur pomkine
Si vous ne voulez vraiment pas à utiliser FileReader(même Si je ne comprenais pas pourquoi), vous pouvez aller pour FileInputStream.
Syntaxe:
FileReader
et a toujours le problème de l'utilisation de l'encodage par défaut de la plate-forme actuelle plutôt qu'une correction de l'encodage que vous savez correspond à celui du fichier.OriginalL'auteur Helios
Vous avez raison d'éviter
FileReader
comme toujours utilise le codage de caractères par défaut de la plate-forme, qui peut ne pas être le même que l'encodage du fichier JSON.ObjectMapper a une surcharge de
readValue
qui peut lire directement à partir d'unFile
, il n'y a pas besoin de la mémoire tampon du contenu temporairebyte[]
:OriginalL'auteur Ian Roberts
Vous pouvez lire tous les octets d'un fichier dans le tableau d'octets, même dans la version 6 de Java tel que décrit dans une réponse à une question relative à la:
J'ai ajouté les contrôles conduisant à des exceptions et le changement de
read
àreadFully
, qui a été proposé dans les commentaires en-dessous de l'original de la réplique.OriginalL'auteur Palec