В този урок ще научим за Java OutputStreamWriter и неговите методи с помощта на примери.
В OutputStreamWriter
класа на java.io
пакета може да се използва за конвертиране на данни в герой форма на данни в байтове форма.
Той разширява абстрактния клас Writer
.
В OutputStreamWriter
класа работи с други изходни потоци. Известен е и като мост между байтовите потоци и символните потоци. Това е така, защото OutputStreamWriter
преобразува своите символи в байтове.
Например, някои символи изискват 2 байта да бъдат съхранени в хранилището. За да запишем такива данни, можем да използваме писателя на изходния поток, който преобразува символа в съответни байтове и съхранява байтовете заедно.
Създайте OutputStreamWriter
За да създадем OutputStreamWriter
, първо трябва да импортираме java.io.OutputStreamWriter
пакета. След като импортираме пакета тук е как можем да създадем писател на изходния поток.
// Creates an OutputStream FileOutputStream file = new FileOutputStream(String path); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file);
В горния пример ние създадохме OutputStreamWriter
именен изход заедно с FileOutputStream
посочения файл.
Тук използваме кодирането на символи по подразбиране за записване на символи в изходния поток.
Можем обаче да посочим типа кодиране на символи ( UTF8 или UTF16 ), който да се използва за записване на данни.
// Creates an OutputStreamWriter specifying the character encoding OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);
Тук използвахме Charset
класа, за да определим типа кодиране на символи.
Методи на OutputStreamWriter
В OutputStreamWriter
клас осигурява приложения за различни методи представят в Writer
клас.
метод write ()
write()
- пише един писател на писателяwrite(char() array)
- записва символите от посочения масив в писателяwrite(String data)
- записва посочения низ в писателя
Пример: OutputStreamWriter за запис на данни във файл
import java.io.FileOutputStream; import java.io.OutputStreamWriter; public class Main ( public static void main(String args()) ( String data = "This is a line of text inside the file."; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file); // Writes string to the file output.write(data); // Closes the writer output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
В горния пример създадохме четец на изходен поток, използвайки изходния поток на файла. Четецът на изходния поток е свързан с файла output.txt .
FileOutputStream file = new FileOutputStream("output.txt"); OutputStreamWriter output = new OutputStreamWriter(file);
За да запишем данни във файла, използвахме write()
метода.
Тук, когато стартираме програмата, файлът output.txt се пълни със следното съдържание.
This is a line of text inside the file.
метод getEncoding ()
В getEncoding()
метод може да се използва, за да получите типа кодиране, който се използва за запис на данни към изходния поток. Например,
import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.io.FileOutputStream; class Main ( public static void main(String() args) ( try ( // Creates an output stream FileOutputStream file = new FileOutputStream("output.txt"); // Creates an output stream reader with default encoding OutputStreamWriter output1 = new OutputStreamWriter(file); // Creates an output stream reader specifying the encoding OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8")); // Returns the character encoding of the output stream System.out.println("Character encoding of output1: " + output1.getEncoding()); System.out.println("Character encoding of output2: " + output2.getEncoding()); // Closes the reader output1.close(); output2.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Изход
Кодиране на знаци на изход1: Cp1252 Кодиране на знаци на изход2: UTF8
В горния пример създадохме 2 писателя на изходни потоци, наречени output1 и output2.
- output1 не указва кодирането на символи. Следователно
getEncoding()
методът връща кодирането на символите по подразбиране. - output2 определя кодирането на символи, UTF8 . Следователно
getEncoding()
методът връща посоченото кодиране на символи.
Забележка : Използвахме Charset.forName()
метода, за да определим типа кодиране на символи. За да научите повече, посетете Java Charset (официална документация за Java).
метод close ()
За да затворим писателя на изходния поток, можем да използваме close()
метода. След като close()
методът бъде извикан, не можем да използваме писателя, за да запишем данните.
Други методи на OutputStreamWriter
Метод | Описание |
---|---|
flush() | принуждава да запише всички данни, присъстващи в записващото устройство, до съответната дестинация |
append() | вмъква посочения знак в текущия писател |
За да научите повече, посетете Java OutputStreamWriter (официална документация за Java).