-
ByteArrayOutputStream
предназначен для записи байтов в оперативную память byte[]
.
-
FileOutputStream
предназначен для записи байтов в File
.
-
FilterOutputStream
- это общий суперкласс для более специфичных выходных потоков, которые заранее обрабатывают данные, такие как шифрование / дешифрование, вычисление контрольной суммы, кодирование символов, сжатие (сжатие) и так далее. Само по себе ничего особенного.
-
ObjectOutputStream
для записи полноценных типов Java и объектов в сериализованной форме в поток байтов. Он в основном позволяет преобразовывать сложные объекты Java в необработанные байты и наоборот.
-
OutputStream
- это просто общий абстрактный класс этих потоков. Вы не можете построить это в любом случае. Однако вы можете заявить против этого.
-
PipedOutputStream
предназначен для возможности записи в другой InputStream
в канале, чтобы другая сторона могла прочитать их из этого InputStream
.
Вы хотите записать данные в виде File
, поэтому FileOutputStream
более чем достаточно.
OutputStream output = new FileOutputStream("/foo.txt");
try {
output.write(text.getBytes());
} finally {
output.close();
}
Обратите внимание, что String#getBytes()
использует кодировку платформы по умолчанию для преобразования символов в байты. Если вы используете «специальные символы», которые не охватываются хотя бы ASCII, то вы всегда должны явно указывать кодировку, используя String#getBytes(charset)
. E.g.:
output.write(text.getBytes("UTF-8"));
Не связанный с конкретным вопросом, обычная практика , однако, заключается в использовании Writer
для записи символьных данных.
Если вас не интересует кодировка символов, используйте FileWriter
:
Writer writer = new FileWriter("/foo.txt");
try {
writer.write(text);
} finally {
writer.close();
}
Он будет использовать кодировку по умолчанию для платформы, которая обычно также поддерживает символы ASCII.
Если вам нужна кодировка символов, используйте OutputStreamWriter
:
Writer writer = new OutputStreamWriter(new FileOutputStream("/foo.txt"), "UTF-8");
// ...
Позволяет указать кодировку как 2-й аргумент, принимая OutputStream
.
Смотри также: