Java FileWriter

Klasa Java FileWriter, java.io.FileWriter, umożliwia zapisywanie znaków do pliku. Pod tym względem Java FileWriter działa podobnie jak FileOutputStream z tą różnicą, że FileOutputStream jest oparty na bajtach, podczas gdy FileWriter jest oparty na znakach. FileWriter jest przeznaczony do pisania tekstu, innymi słowy. Jeden znak może odpowiadać jednemu lub większej liczbie bajtów, w zależności od używanego schematu kodowania znaków. Klasa Java FileWriterjest podklasą klasy Java Writer.

przykład zapisu plików

Oto prosty przykład Javy FileWriter :

Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();

Uwaga: Właściwa obsługa wyjątków została pominięta tutaj dla jasności. Aby dowiedzieć się więcej o prawidłowej obsłudze WYJĄTKÓW, przejdź do Java IO Exception Handling.

FileWriter ma również inne konstruktory, co pozwala określić plik do zapisu na różne sposoby. Zajrzyj do oficjalnego JavaDoc, aby uzyskać więcej szczegółowych informacji.

nadpisywanie a dołączanie pliku

podczas tworzenia środowiska Java FileWriter możesz zdecydować, czy chcesz nadpisać dowolny istniejący plik o tej samej nazwie, czy chcesz dołączyć do dowolnego istniejącego pliku. Decydujesz o tym, wybierając konstruktor FileWriter, którego używasz.

konstruktor FileWriter biorąc tylko jeden parametr, nazwę pliku, nadpisze dowolny istniejący plik:

Writer fileWriter = new FileWriter("c:\data\output.txt");

FileWriter posiada konstruktor, który przyjmuje również 2 parametry: nazwę pliku i wartość logiczną. Wartość logiczna wskazuje, czy dołączyć lub nadpisać istniejący plik. Oto dwa przykłady Javy FileWriter pokazujące, że:

Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file

FileWriter kodowanie znaków

FileWriter zakłada, że chcesz zakodować bajty do pliku przy użyciu domyślnego kodowania znaków dla komputera, na którym działa aplikacja. To może nie zawsze być to, czego chcesz i nie możesz tego zmienić!

jeśli chcesz określić inny schemat kodowania znaków, nie używaj FileWriter. Zamiast tego użyj OutputStreamWriter na FileOutputStream. OutputStreamWriter pozwala określić schemat kodowania znaków używany podczas zapisu bajtów do pliku bazowego.

write(int)

metoda Java FileWriter write(int) zapisuje dolny 16 bit int do miejsca docelowego, do którego jest podłączony FileWriter, jako pojedynczy znak. Oto przykład zapisu pojedynczego znaku do Javy FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');

write(char)

Java FileWriter ma również metodę write(char), która może zapisać tablicę znaków do miejsca docelowego, do którego jest podłączony FileWriter. Metoda write(char) Zwraca liczbę znaków faktycznie zapisanych do FileWriter. Oto przykład zapisu tablicy znaków do Javy FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);

wydajność zapisu

szybsze jest zapisywanie tablicy znaków do Java FileWriter niż zapisywanie jednego znaku naraz. Przyspieszenie może być dość znaczące – do 10 x wyższe lub więcej. Dlatego zaleca się stosowanie metod write(char) w miarę możliwości.

dokładna prędkość zależy od systemu operacyjnego i sprzętu komputera, na którym uruchamiasz kod Java. Szybkość zależy od problemów, takich jak prędkość pamięci, prędkość dysku twardego i rozmiary buforów itp.

przezroczyste buforowanie przez BufferedWriter

możesz uzyskać przezroczyste buforowanie bajtów zapisanych do Javy FileWriter, zawijając je w Java BufferedWriter . Wszystkie bajty zapisane do BufferedWriterbędą najpierw buforowane wewnątrz wewnętrznej tablicy bajtów w BufferedWriter. Gdy bufor jest pełny, bufor jest spłukiwany do bazy FileWriter naraz. Oto przykład zawijania Javy FileWriter w BufferedWriter:

int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );

możesz przeczytać więcej o BufferedWriterw moim tutorialu BufferedWriter.

flush()

metoda Java FileWriter’s flush() spłukuje wszystkie dane zapisane do FileWriter do pliku bazowego. Dane mogą być gdzieś buforowane w pamięci systemu operacyjnego, nawet jeśli twój kod Java zapisał go na FileWriter. Wywołując flush() możesz mieć pewność, że wszystkie buforowane dane zostaną zapisane na dysku. Oto przykład spłukiwania danych zapisanych w Javie FileWriter przez wywołanie jej metody flush() :

fileWriter.flush();

zamykanie maszyny do zapisu plików

po zakończeniu pisania znaków w Javie FileWriter należy pamiętać o jej zamknięciu. Zamykanie FileWriter odbywa się poprzez wywołanie jej metody close(). Oto jak wygląda zamykanie Javy FileWriter :

fileWriter.close();

możesz także użyć konstrukcji try-with-resources wprowadzonej w Javie 7. Oto jak używać i zamykać wygląd FileWriter za pomocą konstrukcji try-with-resources:

try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.