Bei der Ausgabe des Verarbeitungsergebnisses eines Programms in eine Datei muss möglicherweise ein anderer Code als der Standard-Zeilenvorschubcode der Ausführungsumgebung angegeben werden. Verarbeitung, die mit Symbolen wie "LF" und "CRLF" in Befehlszeilenparametern und Eigenschaftendateien angegeben wird und diese den Zeilenvorschubzeichenfolgen "\ n" und "\ n \ r" gemäß den angegebenen Symbolen im empfangenen Programm zuweist. Ich schrieb, aber ich bemerkte, dass es in Aufzählung zusammengestellt wurde.
enum Bei der Standardmethode valueOf (String name) stimmt der angegebene Name nicht überein
java.lang.IllegalArgumentException: No enum constant NewLine.XXX
Da eine Ausnahme wie diese ausgelöst wird, habe ich eine Methode get (String name) vorbereitet.
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;
}
}
Dies ist ein Bild, das einen Zeilenumbruch in der Eigenschaft angibt. Dies ist ein Beispiel, das eine der NewLine-Aufzählungen als Eigenschaft angibt und in der Schreibmethode von Writer verwendet.
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);
}
}