Как установить параметры добавления и StandardCharsets / Encoding для BufferedWriter в Java? - PullRequest
0 голосов
/ 15 января 2019

Я новичок в программировании на Java и ищу варианты записи и добавления содержимого файлов с помощью Java.

Аналогичные параметры для параметров ниже C #.

File.WriteAllText(string path, string contents, Encoding encoding);
File.AppendAllText(string path, string contents, Encoding encoding);

Хотя я и использую BufferedWriter, у него есть возможность передать истину / ложь для FileWriter (путь строки, логическое добавление), но у меня нет возможности предоставить кодировку.

try (FileWriter fw = new FileWriter(path, false);
    BufferedWriter bw = new BufferedWriter(fw)) {
    bw.write("appending text into file");
}

Если я инициализирую BufferedWriter с помощью Files.newBufferedWriter, я могу предоставить StandardCharsets, но у него нет возможности добавить его в случае существующего файла.

try (BufferedWriter bw = Files.newBufferedWriter(Paths.get(path), StandardCharsets.UTF_8)) {
    bw.write("test");
    bw.append("append test");
}

Можно ли определить оба параметра вместе (Добавить параметры и StandardCharsets)?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы можете попробовать java.nio , чтобы добавить контент в существующий файл (если вы используете Java 7 или выше), возможно, вы можете сделать что-то вроде этого:

List<String> newContent = getNewContent(...); // Here you get the lines you want to add
Files.write(myFile, newContent, UTF_8, APPEND, CREATE);

Импорт должен быть выполнен:

java.nio.charset.StandardCharsets.UTF_8, java.nio.file.StandardOpenOption.APPEND, java.nio.file.StandardOpenOption.CREATE

Или вы можете попробовать Гуава :

File myFile = new File("/Users/home/dev/log.txt");
String newContent = "This is new content";
Files.append(newContent, myFile, Charsets.UTF_8);
0 голосов
/ 15 января 2019

Да. если вы посмотрите на реализацию класса Files, есть метод следующим образом:

public static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options)

, чтобы вы могли вызвать метод, подобный

BufferedWriter bw = Files.newBufferedWriter(Paths.get(path), StandardCharsets.UTF_8, 
                    StandardOpenOption.CREATE, StandardOpenOption.APPEND)

Если вы используете IDE, такую ​​как Intellij, это будет означать, какие публичные методы вам разрешено вызывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...