Sto cercando una soluzione semplice e salvifica per aggiungere testo a un file esistente in Java 8 utilizzando uno specifico Charset cs
. La soluzione che ho trovato here riguarda lo standard Charset
che è un no-go nella mia situazione.Come aggiungere il testo al file in Java 8 utilizzando il set di caratteri specificato
9
A
risposta
14
Un modo per usare la versione di overload di Files.write
that accepts a Charset:
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.nio.file.StandardOpenOption.APPEND;
import static java.nio.file.StandardOpenOption.CREATE;
List<String> lines = ...;
Files.write(log, lines, UTF_8, APPEND, CREATE);
0
È possibile utilizzare il metodo di aggiunta di Guava Class Files. Inoltre, puoi dare un'occhiata a java.nio.charset.Charset.
3
Path path = Paths.get("...");
Charset charset = StandardCharsets.UTF_8;
List<String> list = Collections.singletonList("...");
Files.write(path, charset, list, StandardOpenOption.APPEND);
+1
piccolo errore di battitura: StandardOpenOption.APPEND – Apostolos
+0
@Apostolos corretto, grazie –
1
Sulla base della risposta accettata nella domanda che indicò:
try (PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("myfile.txt", true), charset)))) {
out.println("the text");
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Grande. Stavo già pensando a quella funzione, ma non sapevo che esistesse un "APPEND" di OpenOption. Ho appena letto "opzioni - opzioni che specificano come il file è aperto" e ho pensato: in nessun modo, questa funzione non mi aiuterà. –
Conoscere le API POSIX, 'open()' in questo caso, aiuta a capire queste cose. Alla fine java può fornire solo wrapper su funzioni di sistema. È anche utile sapere cosa puoi ricondurre a tramite JNA se java non è abbastanza potente. – the8472
@ principal-ideal-domain FYI, è già stato risposto nella domanda che hai linkato http://stackoverflow.com/a/29456593/1587046 E poi potresti semplicemente guardare l'API per vedere che c'è una versione sovraccaricata in cui può specificare il charset https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#write(java.nio.file.Path,%20java.lang.Iterable,% 20java.nio.charset.Charset,% 20java.nio.file.OpenOption ...) –