cимвольные - последовательность двухбайтовых символов Unicode (char)
Парные классы в иерархиях байтовых потоков
InputStream - OutputStream - абстрактные суперклассы байтовых потоков.
FileInputStream - FileOutputStream - предназначен для записи байт в файл/чтения байтов из файла. Имя файла передается конструктору при создании объекта.
FilterInputStream - FilterOutputStream - являются, соответственно, абстрактными классами надстройками над классами InputStream и OutputStream.
Основное предназначение надстроек - наделение существующего потока новыми свойствами.
Комбинируя исходный поток и классы надстройки, можно создать новый поток с заданным набором свойств.
Если нужно наделить существующий поток некоторым свойством, достаточно надстроить его соответствующим классом надстройкой и работать с объектом последнего.
DataInputStream - DataOutputStream - используются для чтения-записи примитивных типов данных: double, boolean и т.д.
BufferedInputStream - BufferedOutputStream - используется для чтения-записи с поддержкой буфера определённого размера с целью ускорения файловых операций чтения/записи.
ByteArrayInputStream - ByteArrayOutputStream - данные считываются из массива/записываются в массив.
ObjectInputStream - ObjectOutputStreamZipInputStream - ZipOutputStream