Funkcja I/O Apache Commons I/O zastępuje poprzedni tekst w pliku. Chciałbym dołączyć dane do mojego pliku. Czy jest jakiś sposób, abym mógł używać Commons I/O do tego samego? Mogę to zrobić za pomocą zwykłego BufferedWriter
z Javy, ale jestem ciekawy co do tego samego wykorzystania Commons I/O.Dołączanie danych do pliku za pomocą Apache Commons I/O
Odpowiedz
Został zaimplementowany w wersji 2.1 Apache IO. Aby dołączyć ciąg do pliku po prostu przekazać prawdziwą jako dodatkowy parametr w funkcji:
- FileUtils.writeStringToFile
- FileUtils.openOutputStream
- FileUtils.write
- FileUtils.writeByteArrayToFile
- fileutils .writeLines
np .:
FileUtils.writeStringToFile(file, "String to append", true);
ten mały thingy powinno załatwić sprawę:
package com.yourpackage;
// you're gonna want to optimize these imports
import java.io.*;
import org.apache.commons.io.*;
public final class AppendUtils {
public static void appendToFile(final InputStream in, final File f)
throws IOException {
IOUtils.copy(in, outStream(f));
}
public static void appendToFile(final String in, final File f)
throws IOException {
appendToFile(IOUtils.toInputStream(in), f);
}
private static OutputStream outStream(final File f) throws IOException {
return new BufferedOutputStream(new FileOutputStream(f, true));
}
private AppendUtils() {
}
}
edit: mój zaćmienie był zepsuty, więc nie pokazać mi błędy wcześniej. naprawiono błędy
Seanizer, dzięki kolego! – Dexter
Ostrożnie. Ta implementacja wydaje się przeciekać uchwyt pliku ...
public final class AppendUtils {
public static void appendToFile(final InputStream in, final File f) throws IOException {
OutputStream stream = null;
try {
stream = outStream(f);
IOUtils.copy(in, stream);
} finally {
IOUtils.closeQuietly(stream);
}
}
public static void appendToFile(final String in, final File f) throws IOException {
InputStream stream = null;
try {
stream = IOUtils.toInputStream(in);
appendToFile(stream, f);
} finally {
IOUtils.closeQuietly(stream);
}
}
private static OutputStream outStream(final File f) throws IOException {
return new BufferedOutputStream(new FileOutputStream(f, true));
}
private AppendUtils() {}
}
+1. A teraz potrzebujemy tylko narzędzia w stylu Java 7 z nowym stylem zarządzania zasobami: http://www.oracle.com/technetwork/articles/java/trywithresources-401775.html ... a także - jak do diabła nie jest " t te rzeczy zawarte w Apache Commons lub innej bibliotece? – ripper234
Ach, nieważne, FileUtils w rzeczywistości zawierają FileUtils.writeStringToFile(); Głosuj na http://stackoverflow.com/a/8294642/11236 – ripper234
public static void writeStringToFile(File file,
String data,
boolean append)
throws IOException
Writes the toString() value of each item in a collection to the specified File line by line. The default VM encoding and the default line ending will be used.
Parameters:
file - the file to write to
lines - the lines to write, null entries produce blank lines
append - if true, then the lines will be added to the end of the file rather than overwriting
Throws:
IOException - in case of an I/O error
Since:
Commons IO 2.1
Jak zamknąć strumień wyjściowy w tym przypadku? – Rishi
Pobierz najnowszą wersję Commons-io 2,1
FileUtils.writeStringToFile(File,Data,append)
zestaw dołączyć true ....
Duplikat http://stackoverflow.com/a/8294642/11236 – ripper234
Właściwie, wersja 2.4 z Apache commons-io fileutils ma teraz tryb dołączania również do kolekcji.
A zależność Maven:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<type>jar</type>
</dependency>
w wersji 2.5 trzeba przekazać jeden dodatkowy parametr tj, kodowanie.
FileUtils.writeStringToFile(file, "line to append", "UTF-8", true);
Użyj 'StandardCharsets.UTF_8' w JDK8 zamiast stałej łańcuchowej" UTF-8 ". –
- 1. Jaka jest różnica między maven dependencies org.apache.commons: commons-io i commons-io: commons-io?
- 2. Monitorowanie postępów za pomocą Apache Commons FTPClient
- 3. Przenieść surowy plik binarny za pomocą apache commons-net FTPClient?
- 4. Jak rozpakować plik TAR za pomocą Apache Commons
- 5. Zdobądź medianę z serii liczb za pomocą Apache Commons Math
- 6. Wykładniczy pasujący do apache commons matematyka
- 7. Apache Commons FTPClient.listFiles
- 8. Apache Commons JCI ReloadingClassLoader
- 9. dołączanie wierszy do ramki danych za pomocą pakietu foreach
- 10. Jak pisać do pliku za pomocą niezablokowanego IO?
- 11. DefaultParser w Apache Commons CLI
- 12. jak przesłać plik za pomocą przesyłania plików w pliku commons
- 13. Android Gradle kompilowanie commons-io tworzy duplikat w drzewie biblioteki
- 14. Dodawanie Apache Commons zależność Play Framework 2.0
- 15. ftp apache-commons wielu plików
- 16. Dołączanie do danych wyjściowych procesów do wyświetlenia
- 17. JSP - Przesyłanie plików z Apache Commons
- 18. Kłopoty z wprowadzaniem wielu poleceń do polecenia za pomocą Apache Commons Exec i wypakowywanie wyjścia
- 19. Obliczanie t-inverse w apache commons
- 20. Jak dołączyć plik do wiadomości e-mail w formacie HTML za pomocą Apache Commons Email
- 21. Czy dołączanie dowolnych danych do pliku ELF narusza specyfikację ELF?
- 22. problem z ostrzeżeniem log4j - apache commons
- 23. dołączanie pliku do wiadomości e-mail z folderu/danych urządzenia
- 24. Python Gzip - Dołączanie do pliku w locie
- 25. Decydując między Apache Commons Exec lub ProcessBuilder
- 26. Dołączanie SVG do DOM za pomocą pakietu Web Pack
- 27. Apache Commons Lang 2 vs 3
- 28. Apache Commons Email i UTF-8
- 29. Odczytywanie danych z xlsx za pomocą SXSSFSheet Apache POI
- 30. Gdzie jest Apache Commons dla C?
Nie sądzę, że istnieje metoda gotowa do tego. Możesz oczywiście zrobić readLines (...). Append (myLines), ale przypuszczam, że mówisz o potencjalnie bardzo dużym pliku. – extraneon
Tak! Mam 27k plików z około 900,00 wpisów w nim. Szukasz więcej innowacji tutaj! – Dexter
Istnieje otwarte żądanie funkcji (https://issues.apache.org/jira/browse/IO-182). Niestety, jest otwarty od września 2008 r. I nie wykazuje żadnych oznak, że ktokolwiek w rzeczywistości wyciąga palec i robi to. – skaffman