Lors de la sortie du résultat du traitement d'un programme dans un fichier, il peut être nécessaire de spécifier un code autre que le code de saut de ligne par défaut de l'environnement d'exécution. Traitement qui spécifie avec des symboles tels que "LF" et "CRLF" dans les paramètres de ligne de commande et les fichiers de propriétés, et les affecte aux chaînes de caractères de saut de ligne "\ n" et "\ n \ r" en fonction des symboles spécifiés dans le programme reçu. J'écrivais, mais j'ai remarqué que c'était mis en place dans enum.
enum Avec la méthode par défaut valueOf (String name), il n'y a pas de nom correspondant
java.lang.IllegalArgumentException: No enum constant NewLine.XXX
Puisqu'une exception comme celle-ci est levée, j'ai préparé une méthode get (String name).
NewLine.java
public enum NewLine {
CR("\r"),
LF("\n"),
CRLF("\r\n"),
DEFAULT(System.lineSeparator());
private final String value;
private NewLine(String value) {
this.value = value;
}
public String getValue() {
return value;
}
static NewLine get(String name) {
try {
return valueOf(name);
}
catch (IllegalArgumentException | NullPointerException ignore) {}
return DEFAULT;
}
}
Il s'agit d'une image qui spécifie un saut de ligne dans la propriété. Il s'agit d'un exemple qui spécifie l'une des énumérations NewLine en tant que propriété et l'utilise dans la méthode d'écriture de Writer.
NewLineTest.java
public class NewLineTest {
static Properties prop;
@BeforeClass
static public void init() {
prop = new Properties();
prop.setProperty("newline", "LF");
}
@Test
public void test() throws Exception {
NewLine EOL = NewLine.get(prop.getProperty("newline"));
StringWriter writer = new StringWriter();
writer.write("line");
writer.write(EOL.getValue());
System.out.print(writer);
}
}